1,冒泡排序
现在有不规律的数列1 5 4 3 6 7 9 8 2,先将数列开头两个数字进行比较,1 < 4,所以不更改顺序;再将数列第二个数字和第三个数字进行比较,5 < 4,所以将5和4的位置调换,原数列变为 1 4 5 3 6 7 9 8 2 . 所以我们将所有相邻数字进行比较后,原数列应该变为1 4 3 5 6 7 8 2 9,这显然没有达到我们需要的排序标准。所以我们要进行多次排序,直到数列中的每两个相邻数后者总是比前者大,则排序完成。
在c语言中,我们可以运用for循环和if语句来对数列进行冒泡排序:
#include<stdio.h>
int main()
{
int arr[10]={1,3,6,5,4,2,9,8,7,0};
for(int i = 0;i<9;i++)
{
for(int j = 0; j < 9 - i;j++)
{
if (arr[j] > arr[j+1])
{
int t = arr[j+1];
arr[j+1] = arr[j];
arr[j] = t;
}
}
}
for(int a;a < 10;a++)
printf("%d", arr[a]);
return 0;
}
2,选择排序
现在还是有不规律的数列1 5 4 3 6 7 9 8 2 ,我们先将第一个数字1和后面8个数字进行比较,发现1最小,所以数列的顺序不改变;我们将第二个数字5和后面的7个数字进行比较,发现这8个数字中2最小,所以我们将5和2的顺序替换,得到改变后的数列为1 2 4 3 6 7 9 8 5.
当我们将所有数字进行排序后,数列应变为1 2 3 4 5 6 7 8 9,这叫做选择排序。
int main()
{
int arr[10]={1,3,6,5,4,2,9,8,7,0};
for(int i = 0;i<9;i++)
{
for(int j = i+ 1; j < 10;j++)
{
if (arr[i] > arr[j])
{
int t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
}
for(int a;a < 10;a++)
printf("%d", arr[a]);
return 0;
}
Comments | NOTHING