zoukankan      html  css  js  c++  java
  • 排序算法:希尔排序

    希尔排序法(缩小增量法) 属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序的方法。
    //shell排序

    /*

    • 基本思想:将序列分成几类,在类里将它分成几个小组,再让它在小组内进行排序,依次重复直至排序成功

    • 1,找出间距gap(分类)最后间距分类必须为1, 第一重循环

    • 2, 找出各组 ,组间循环,第二重循环

    • 3,找出组内元素,第三重循环,并对转储

    */

    #include <stdio.h>
    void shellsort(int a[],int n)
    {
        int i,j,flag,gap=n;
        int tmmp;
        while(gap>1)
        {
            gap=gap/2;//缩小增量,每次减半
            do//子序列应用冒泡排序
            {
                flag=0;
                for(i=0; i<n-gap; i++)
                {
                    j=i+gap;
                    if(a[i]<a[j])
                    {
                        a[i]=a[i]^a[j];
                        a[j]=a[i]^a[j];
                        a[i]=a[i]^a[j];
                        flag=1;
                    }
                }
    
            }
            while(flag!=0);//优化冒泡排序
        }
    }
    
    main()
    {
        int i,a[10] = {-12,23,345,1,34,-45,34,3,2,5};
        printf("原序列的元素排序为:
    ");
        for(i=0; i<10; i++)
        {
            printf("%d ",a[i]);
    
        }
        shellsort(a,10);
    
        printf("
    排序后的元素位置:");
        for(i=0; i<10; i++)
        {
            printf("%d ",a[i]);
    
        }
    
    }
    
  • 相关阅读:
    angular2中*ngFor同时适用*ngIf
    win10 正确安装node-sass方式
    ios10禁止用户缩放
    ubuntu切换全屏
    编译scss文件夹
    清除select中的三角形(下拉)
    js中的!!
    scss封装css3兼容性
    js获取当前时间
    Sql Server 数据分页
  • 原文地址:https://www.cnblogs.com/webmen/p/5739379.html
Copyright © 2011-2022 走看看