一、选择排序
例题:p226第九章例9-2
要求将学生的成绩信息按照学生的个人平均成绩从高到低输出它们的信息
//结构数组排序,使用选择排序法
for(i=0;i<n-1;i++){//只用进行n-1次
index=i;//index暂时用来储存i,用来等会比较
for(j=i+1;j<n;j++){//j=i+1是因为要将index与index后面一位进行比较,此时index储存的还是i的值
if(stu[j].average>stu[index].average){//比较平均成绩
index=j;} }//此时index赋值为j
change=stu[index];
stu[index]=stu[i];
stu[i]=change;//交换数组元素,把第i个和它以后最大的进行交换。每次选出最大的,放在排序区间的最前面,也就是i的位置
}//这种交换一共进行了i-1次
执行完这一步骤后,个人平均成绩被从高到低进行排序
二、冒泡排序
例题:p197第八章例8-5
输入n(n<=10)个正整数,将他们从小到大排序后输出。要求使用冒泡排序算法
for(i=1;i<n;i++){//外部循环。进行n-1次循环
for(j=0;j<n-i;j++){//内部循环。
if(a[j]>a[j+1]){//比较相邻两个数的大小,一共比较n-i次;
change=a[j];
a[j]=a[j+1];
a[j+1]=change;}//如果第j个数大于j第j+1个数,则将它们俩位置交换,否则,继续比较第j+1和j+2个数的大小;
}//每次排序都在将较大的数往后挪一个位置,直到遇到比它更大的数则停止挪动该数值,继续挪动那一个比它更大的数值,每次轮完之后,最大的数排在最后 }
综合来说,选择排序比冒泡排序更容易理解