要数组完成排序功能需要如下两个动作:
1.交换数组的元素值
代码如下:
int arr[5] = {5 ,3, 4, 1, 2};
printf("%d", arr[0]);
printf("%d\n", arr[1]);
int a = arr[0];
arr[0] = arr[1];
arr[1] = a;
printf("%d", arr[0]);
printf("%d", arr[1]);
效果如图:
解析:
2.比较相邻元素的大小 将最大值放在最后面
代码如下:
int arr[5] = {6, 5, 4, 3, 2};
for(int j = 0; j < 4; j++){
if(arr[j] > arr[j + 1]){
int a = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = a;
}
}
for (int i = 0; i < 5; i++){
printf("%d", arr[i]);
}
效果如图:
此段代码和上面类似只是在此基础上加了个for循环(可以将最大值放在最后)
*以上代码理解后就基本上学会了**排序***
那么出一题来巩固排序:
输入5个数字 对他们排序 并打印
代码如下:
int arr[5];
for(int i = 0; i < 5; i++){
scanf("%d", &arr[i]);
}
for(int i = 0; i < 4; i++){
for(int j = 0; j < 4; j++){
if(arr[j] > arr[j + 1]){
int a = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = a;
}
}
}
printf("----------------\n");
for (int i = 0; i < 5; i++){
printf("%d\n", arr[i]);
}
效果如图: