简单了解插入排序

本文介绍了插入排序的基本原理和步骤,以升序为例,通过两重循环实现元素的比较和移动,确保有序序列的形成。插入排序从第二个元素开始,逐个与前面的有序序列比较并插入合适位置,直至所有元素排序完成。提供的Java代码展示了插入排序的完整实现过程。
摘要由CSDN通过智能技术生成
插入排序:

从第一个元素开始,将每个待排序的数据插入到前面已经排好序的有序序列中,直到所有元素插完为止。

步骤:(以升序为例)

1.从第二个元素开始,(可以认为第一个元素是有序的)
2.读取第一个待排序元素element,
3依次与前面的有序序列比较(此处为从后往前比较)如果element小于前一个元素,则交换位置,
4.重复3直到找到小于等于element的元素,
5.重复2~4直到排序完成`

思路:

假设前面n个元素已经有序,将第n+1个元素插入到前面的有序序列中,让前n+1个元素有序。按此思路对所有元素排序直到整个序列有序
一般都是从第一个开始插入,因为不确定前面的数据都是有序的

代码如下:
public class InsertSort {
    public void insertSort(int[] array){
        //记录要插入的元素下标
        int k;
        int len = array.length;
        //可以认为第一个已经排序直接从第二个元素开始
        for (int i = 1; i < len; i++) {
            k = i;
            //从已排序的元素中依次往前比较
            for (int j = i-1; j > 0; j--) {
                //如果比插入的元素大则向后移移
                if (array[k]<array[j]){
                    int temp = array[k];
                    array[k] = array[j];
                    array[j] = temp;
                    k --;
                }else {
                    //否则跳出循环
                    break;
                }
            }
        }
    }   
    //测试方法
    public static void main(String[] args) {
        int[] arr ={9,65,32,56,8,12,45,26,58,78,24,32};
        InsertSort i = new InsertSort();
        i.insertSort(arr);
        for (int a:arr) {
            System.out.print(a+" ");
        }
    }
}
结果如下:

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值