美文网首页
数据结构与算法-插入排序&希尔排序

数据结构与算法-插入排序&希尔排序

作者: 星空下奔跑 | 来源:发表于2018-03-30 21:59 被阅读0次

直接插入排序

排序思想:假设第i个记录前面的顺序表有序,将待排记录插入到合适位置,并将之后的记录后移。

void InsertSort(Sqlist &L){
    for(int i=2;i<=L.length;i++){
        if(LT(L.r[i],L.r[i-1]){
            L.r[0]=L.r[i];
            for(j=i-1;LT(L.r[0],L.r[j]);j--){
                L.r[j]=L.r[j-1];
            }
            L.r[j]=L.r[0];
        }
    }

Java实现:

private void insertSort(int[] array) {
        int len=array.length;
        for (int i = 0; i < len-1; i++) {
            for (int j = i + 1; j >0; j--) {
                if (array[j] < array[j - 1]) {
                    int tmp = array[j - 1];
                    array[j - 1] = array[j];
                    array[j] = tmp;
                }
            }
        }

        println(array);
    }

希尔排序

排序思想:先将整个待排记录序列分割成为若干个子序列分别进行直接插入排序,待整个序列“基本有序”再对全体进行一次直接插入排序。

void ShellInsert(Sqlist &L,int k){
     for(int i=k+1;i<=L.length;i++){
        if(LT(L.r[i],L.r[i-1]){
            L.r[0]=L.r[i];
            for(j=i-k;LT(L.r[0],L.r[j]);j-=k){
                L.r[j]=L.r[j-1];
            }
            L.r[j]=L.r[0];
        }
}

void ShellSort(Sqlist &L,int dlta[],int t){
    for(int k=0;k<t;k++){
        ShellSort(L,dlta[k]);
    }//for
}

Java实现:

private  int dlta[] = {4,3,2,1};
private void shellSort(int[] array){
        int dl=dlta.length;
        for (int i = 0; i < dl; i++) {
            shellInner(array,dlta[i]);
            println(array);
        }

        println(array);
    }

    private void shellInner(int[] array,int step){
        int len=array.length;

        for (int i = 0; i < len-step; i += step) {
            for (int j = i + step; j > 0; j -= step) {
                if (array[j] < array[j - step]) {
                    int tmp=array[j];
                    array[j]=array[j-step];
                    array[j-step]=tmp;
                }
            }
        }
    }

相关文章

  • Python 算法大全

    这个库涵盖了多种算法和数据结构的介绍,比如: 排序算法(冒泡排序、希尔排序、插入排序、桶排序、合并排序、快速排序、...

  • 希尔排序

    算法学习记录-排序——希尔排序 - sjdang - 博客园iOS算法总结-希尔排序 - 简书 与插入排序不同,我...

  • 常用的排序算法详解:希尔排序,桶排序,选择排序,冒泡排序,快速排

    排序算法——希尔排序 希尔排序是插入排序的一种,又称"缩小增量排序”,是插入排序算法的一种更高效的改进版本。 希尔...

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 排序算法-7---希尔排序

    排序算法-7---希尔排序 概念 希尔排序(Shellsort),也称递减增量排序算法,是一种典型的插入排序算法,...

  • 详解排序算法--希尔排序

    希尔排序 希尔排序的由来是根据插入排序的。读者若不了解插入排序,可以参考笔者的详解排序算法--插入排序和冒泡排序....

  • 排序-希尔排序(分治)

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • swift经典算法-希尔排序

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • 排序算法④——希尔排序

    希尔排序 希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序...

  • 算法学习:希尔排序

    背景介绍:也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序...

网友评论

      本文标题:数据结构与算法-插入排序&希尔排序

      本文链接:https://www.haomeiwen.com/subject/fznvcftx.html