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]);
    
        }
    
    }
    
  • 相关阅读:
    批处理文件 bat
    批处理文件 搜索指定路径文件拷贝出去
    css 表格
    jquery面试题
    indexedDB使用
    页面加载及优化
    Ajax,restful/Rest JSON和JSONP
    数组去重
    删除数组里大于3的元素
    判断一个字符串中出现次数最多的字符,统计这个次数
  • 原文地址:https://www.cnblogs.com/webmen/p/5739379.html
Copyright © 2011-2022 走看看