考试复习整理了目前对它们的理解,代码如下:
#include <stdio.h>
int main() //1.bubble sort
{
int num[10],i,j,temp;
printf("输入10个整数以得到它们从大到小的排序结果:");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
for(i=0;i<9;i++){ //i标记冒泡轮数,比如0号沉底,第一轮结束,又从现在的0号(原始数组的1号)开始冒泡
for(j=0;j<9-i;j++){ //j控制每一轮冒泡次数(原始0号有9次,原始1号有8次...i号有9-i次)
if(num[j]<num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
printf("\n result:");
for(i=0;i<10;i++)
printf("%3d",num[i]);
return 0;
}
**********************************
#include <stdio.h>
int main() //2.select sort从大到小排时,每轮选择选出最大的放到排头
{
int num[10],max,i,j,temp;
printf("输入10个整数以得到从大到小的排序:");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
for(i=0;i<9;i++){ //i标记轮数,表示要把前9个元素都提出来做一轮选择
max=i; //max初始标记该轮的被选择元素,后经比较最终标记出本轮选出的最大元素
for(j=i+1;j<9-i;j++){ //j控制比较进行,j就是实际每轮比较中被比较元素的实际下标
if(num[max]<num[j])
max=j;
temp=num[max];
num[max]=num[j];
num[j]=temp;
}
temp=num[i];
num[i]=num[max];
num[max]=temp;
}
printf("\n result:");
for(i=0;i<10;i++)
printf("%3d",num[i]);
return 0;
}