冒泡、选择、插入排序法

冒泡排序法

for(int i = 0;i < array.length;i++){ //控制趟数;
for(int j = 0; j < array.length-1-i;j++){
if(array[j] > array[j+1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}

}

i 控制趟数,比较的趟数就是数组的长度。

每次交换两个数,每一趟下来之后最后的数字就是最大的数,下次不用比较。

依次类推,直到i = 数组长度。

此时,所有的数字都已经排好序了。


                        


选择排序法

for(int i = 0;i < array.length;i++){//比较的趟数
minIndex = i;
for(int j = i+1;j < array.length;j++){
    if(array[minIndex] > array[j]){
        temp = array[minIndex];
        array[minIndex] = array[j];
        array[j] = temp;
    }
}
}

1趟,在待排序记录array[0]~array[array.lenght-1]中选出最小的记录,将它与array[0]交换;第2趟,在待排序记录array[1]~array[array.lenght-1]中选出最小的记录,将它与array[1]交换;以此类推,第i趟在待排序记录array[i]~array[array.lenght-1]中选出最小的记录,将它与array[i]交换,使有序序列不断增长直到全部排序完毕。

依此类推,直到 i 等于最后一个数,循环结束。


直接插入法排序

for(int i = 1;i < array.length;i++){
temp = array[i];
for(j =i-1;j >= 0;j--){
if(array[j] > temp){
array[j+1] = array[j];
} else {
break;
}
}
array[j+1] = temp;
}

}


每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。

直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值