1、冒泡排序,n个数排序,需要进行n-1趟冒泡,a0,a1,a2,a3,第一次比较,第二次比较,a0、a1、 a2、 a3分别两两比较并交换,使小数沉底到a3,第三次比较,第一趟冒泡结果,a0,a1,a2,a3,比较前:,第一趟冒泡,小数沉底到a3,第一趟冒泡结果,for(i=0;i+;i3) if(aiai+1) temp=ai;ai=ai+1;ai+1=temp; ,实现一趟冒泡的代码为:,a0,a1,a2,a3,第一次比较,第二次比较,a0、a1、 a2 分别两两比较交换,小数沉底到a2,第二趟冒泡结果,a0,a1,a2,a3,比较前:,第二趟冒泡,小数沉底到a2,第二趟冒泡结果,for(i
2、=0;i+;i2) if(aiai+1) temp=ai;ai=ai+1;ai+1=temp; ,实现第二趟冒泡的代码为:,a0,a1,a2,a3,比较前:,a0、a1两两比较并交换,小数沉底到a1,第三趟冒泡结果,a0,a1,a2,a3,比较前:,第三趟冒泡,小数沉底到a1,第三趟比较结果,for(i=0;i+;i1) if(aiai+1) temp=ai;ai=ai+1;ai+1=temp; ,实现第三趟冒泡的代码为:,for(j=0;j3;j+) ,a0,a1,a2,a3,冒泡排序前:,冒泡排序实现由小到大排序代码,冒泡排序后:,for(i=0;i+;i3-j) if(aiai+1) t
3、emp=ai;ai=ai+1;ai+1=temp; ,4个数排序,需要执行3趟冒泡。,每一趟冒泡,需要数据进行两两比较并交换。,选择排序,n个数排序,需要进行n-1趟选择,过程为:令max表示最大元素的序号(初值max=0),a0到a3逐一比较,找出最大元素的位置,a0与其互换,使最大值位于a0。,a0,a1,a2,a3,第一次比较 max=1,第一趟:从4个元素中选出最大者,将其换入a0中,第一趟选择结果,第二次比较 max=2,第三次比较 max=3,a0,a1,a2,a3,比较前:,第一趟选择,大数换到a0中,只交换一次,第一趟选择结果,max=0;for (j=1;j4;j+)if (
4、amaxaj) max=j;temp=a0;a0=amax;amax=temp;,实现一趟选择的代码为:,过程为:令max表示最大元素的序号(初值max=1),a1到a3逐一比较,找出最大元素的位置,a1与其互换,使最大值位于a1。,a0,a1,a2,a3,第一次比较 max=2,第二趟:从3个元素中选出最大者,将其换入a1中,第二趟选择结果,第二次比较 max=2,a0,a1,a2,a3,比较前:,第二趟选择,大数换到a1中,只交换一次,第二趟选择结果,max=1;for (j=2;j4;j+)if (amaxaj) max=j;temp=a1;a1=amax;amax=temp;,实现第二
5、趟选择的代码为:,过程为:令max表示最大元素的序号(初值max=2),a2到a3逐一比较,找出最大元素的位置,a2与其互换,使最大值位于a2。,a0,a1,a2,a3,第一次比较 max=2,第三趟:从2个元素中选出最大者,将其换入a2中,第三趟选择结果,a0,a1,a2,a3,比较前:,第三趟选择,大数换到a2中,只交换一次,第三趟选择结果,max=2;for (j=3;j4;j+)if (amaxaj) max=j;temp=a2;a2=amax;amax=temp;,实现第三趟选择的代码为:,for(i=0;i3;i+) ,a0,a1,a2,a3,选择排序前:,选择排序实现由大到小排序代码,选择排序后:,max=i;for (j=i+1;j4;j+)if (amaxaj) max=j;temp=ai;ai=amax;amax=temp;,4个数排序,需要执行3趟选择。,每一趟选择,需要数据进行两两比较,只交换1次。,for (i=0;i4;i+)max=i;for (j=i+1;j4;j+)if (amaxaj) max=j;temp=ai;ai=amax;amax=temp;,