默认从小到大排序
①快速法排序
第一轮:第一个数依次与后面的数比较,若第一个数较大,则两数互换位置,即最小的数被放在了第一位
for(i=0;i<a.length-1;i++) //控制比较轮次 for(j=i+1;j<a.length;j++) //总是与其后面的数依次比较 if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; }
②选择法排序
第一轮:1-n数,求出最小数,然后与第一个数互换位置
for(i=0;i<a.length-1;i++) //控制轮次 { k=i; //假设为最小数 for(j=i+1;j<a.length;j++) if(a[k]>a[j]) k=j; //求出当前轮次最小数 if(i!=k) { t=a[i]; a[i]=a[k]; a[k]=t; } }
③冒泡法排序
第一轮:第一个数和第二个数比较,大的放后面,然后第二个数(较大的)再与第三个数比较,就这样最大的数浮到了最上层(最后一个数的位置)
for(i=0;i<a.length-2;i++) //控制比较轮次 for(j=0;j<a.length-1;j++) //控制比较范围 if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
④插入法排序
第一轮:第二个数与第一个数比较,若第二个数较大则放在第一个数后面,否则放在第一个数的位置,第一个数向前一位
for(i=1;i<a.length;i++) //依次放剩下的n-1个数 { for(j=0;j<i;j++) //依次和已排好序的数比较,从小到大 if(a[i]<a[j]) break; //找到它应该插入的位置 x=a[i]; //防止出现两数互换的情况下覆盖当前数 for(t=i-1;t>=j;t--) a[t+1]=a[t]; //在确定位置及其后面的数依次向前移一位 a[j]=x; //当前数放在确定位置上 }
如果只是一维数组排序的话,Arrays.sort方法可以轻松解决。
时间: 2024-10-12 08:40:49