1.冒泡排序(两两比较)
轮数与次数的关系:排序需要轮数i=len-1 每轮需要次数为len-i
void BubbleSort(){
int arr[8]={22,12,20,21,10,5,8,9};
int len=sizeof(arr)/sizeof(int);
int temp;
for(int i=0;i<len-1;i++){ //轮数控制
for(int j=0;j<len-i-1;j++){ //次数控制
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<len;i++){
printf("%d ",arr[i]);
}
}
2.选择排序(逐个比较)
假定第一个数字为最大或最小值,将其与其余数字依次比较,得出最大或者最小的数字,与第一个交换,之后反复此操作
void ChooseSort(){
int arr[8];
int max=0; //记录下标
int temp;
int len=sizeof(arr)/sizeof(int);
for(int i=0;i<8;i++){
printf("请输入第%d个数:",i+1);
scanf("%d",&arr[i]);
}
for(int i=0;i<len-1;i++){ //控制轮数
max=i; //将下标i赋给max
for(int j=i+1;j<len;j++){ //控制次数
if(arr[max]<arr[j]){
max=j;
}
}
temp=arr[max]; //每比完一轮与i下标位置交换
arr[max]=arr[i];
arr[i]=temp;
}
for(int i=0;i<len;i++){
printf("%d ",arr[i]);
}
}