排序
排序:3,5,2,6,4
- 原顺序为{5,3,2,6,4}
- 交换数组中两个元素的值!
- 把下标为0的元素,和下标为1的元素交换一下位置,变为 {3,5,2,6,4}
#include <stdio.h>
int main(){
int arr[5] = {5,3,2,6,4};
int temp = arr[0]; // temp = 5;
arr[0] = arr[1]; // arr[0] = 3;
arr[1] = temp; // arr[1] = 5;
printf("%d",arr[0]);
printf("%d",arr[1]);
}
结果如下:
排序:2,3,4,5,6
通过比较相邻元素的大小,并交换,把最大的值放在数组的最后面。
第一次循环,把最大的值放到了最后面,再经过多次循环,依次把最大值放后面
#include <stdio.h>
int main(){
int arr[5] = {5,3,2,6,4};
for(int i=0;i<4;i++){
for(int j = 0; j<4;j++){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i=0;i<5;i++){
printf("%d",arr[i]);
}
}
对随机五个数字排序
从键盘上输入5个数字,并对他们进行排序(从小到大排序),再打印输出。
#include <stdio.h>
int main(){
// 类型 数组名[个数]
int arr[5];
// 从键盘上输入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 temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
printf("-----------------------\n");
// 打印输出
for(int i=0;i<5;i++){
printf("%d\n",arr[i]);
}
}
对随机五个数字排序(进阶版)
从键盘上输入5个数字,并对他们进行排序(从小到大排序),再打印输出。
#include <stdio.h>
int main(){
//从键盘上输入5个数,从小到大排序,输出
int arr[5];
for(int i=0;i<5;i++){
scanf("%d",&arr[i]);
}
// 通过一个for循环,比较相邻的两个元素,做交换
// 把最大的元素换到数组的最后一个位置
for (int i=0;i<4;i++){
// 假设没有交换
int isSwitch = 0;
for(int j =0;j<4-i;j++){
// j,j++
if(arr[j]>arr[j+1]){ //做交换
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
isSwitch = 1; //有交换
}
}
// 如果一次交换都没有发生,说明已经有序,就不用再循环
if(isSwitch == 0){
break;
}
for(int k = 0;k<5;k++){
printf("%d",arr[k]);
}
printf("\n");
}
}