当一组数据中有一部分数据已经是排好时,用插入排序更好。
插入排序的原理是,升序时,从第二个数开始循环跟前面的数一一作比较,
如果小于前面的数就插入这个数的前面的一个位置。具体看代码。。
//第一种写法
static int[] insertSort(int[] p){
int j, temp;
for(int i=1; i<p.length; i++){
temp = p[i]; //在i前面的数都是排好序的,把p[i]给临时变量
j = i-1;
while(j>=0 && temp < p[j]){ //如果temp比前面的数小
p[j+1] = p[j]; //p[j]往后移
j--; //j自减,让temp与前面的数依次比较
}
p[++j] = temp; //p[++j]为空出来的,把temp插在这个位置
}
return p;
}
//第二种写法,这种写法很好理解。就是temp依次与前面的数比较,插在满足条件的位置
static int[] insertSort(int[] p){
int i, j, temp;
for(i=1; i<p.length; i++){
for(j=i; (j>0)&&(p[j]<p[j-1]); j--){
temp = p[j];
p[j] = p[j-1];
p[j-1] = temp;
}
}
return p;
}
java排序之插入排序(三)
最新推荐文章于 2024-09-28 15:39:21 发布