我是靠谱客的博主 发嗲保温杯,最近开发中收集的这篇文章主要介绍数据结构的简单排序算法——插入排序算法简单排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简单排序

插入排序

插入排序(Insertion sort)是一种简单直观且稳定的排序算法。

需求:

​将数组排序
​排序前:{9,7,8,2,5,1,3,6,4}

排序原理:

  1. 把所有的元索分为两组,已经排序的和未排序的。
  2. 找到未排序的组中的第一个元索,向已经排序的组中进行插入。
  3. 倒叙遍历已经排序的元素,依次和待插入的元索进行比较,直到找到一个元索小于等于待插入元索,那么就把待插入元索放到这个位置,其他的元素向后移动一位。

插入排序

插入排序API设计:

类名Insertion
构造方法Insertion():创建Insertion对象
成员方法1. public static void sort(Comparable[] a):对数组内的元素进行排序
2. private static boolean greater(Comparable v,Comparable w):判断v是否大于w
3. private static void exchange(Comparable[] a,int i,int j):交换a数组中,索引i和索引j处的值

插入排序的代码实现

//Insertion类
public class Insertion {
    //对数据a中的元素进行排序
    public static void sort(Comparable[] a){
        for (int i=1;i < a.length;i++){
            for (int j=i;j > 0;j--){
                //比较索引j处的值和索引j-1处的值,如果索引j-1处的值比索引j处的值大,则数据交换;
                //若索引j-1处的值比索引j处的值小,则就是合适位置,退出循环
                if (greater(a[j-1],a[j])){
                    exchange(a,j-1,j);
                }else {
                    break;
                }
            }
        }
    }

    //比较v元素是否大于w元素
    private static boolean greater(Comparable v,Comparable w){
        return v.compareTo(w)>0;
    }

    //数组元素i和j交换位置
    private static void exchange(Comparable[] a,int i,int j){
        Comparable temp;
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}



//test类
public static void main(String[] args) {
        Integer[] arr = {9,7,8,2,5,1,3,6,4};
        Insertion.sort(arr);

        System.out.println(Arrays.toString(arr));
    }

比较次数为:1 + 2 + … + (n-1)

时间复杂度:O(n2)

空间复杂度:O(1)

稳定性:稳定


参考资料:黑马教程

其他算法:
数据结构的简单排序算法——冒泡排序算法.
数据结构的简单排序算法——选择排序算法.

最后

以上就是发嗲保温杯为你收集整理的数据结构的简单排序算法——插入排序算法简单排序的全部内容,希望文章能够帮你解决数据结构的简单排序算法——插入排序算法简单排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部