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