希爾排序C語言
思路:希爾排序,屬於插入排序的一種,將無序序列中相隔n個元素的元素看作一組,進行簡單插入排序,然後n-1,繼續這樣做,當n = 1時,就是直接插入排序。時間複雜度O(n^1.3),不穩定。
#include <stdio.h> int main(){ int data[10]={6,4,8,3,5,1,7,9,0,2}; int n = 3,i = 0,j = 0,temp = 0; for(;n > 0;n --){ for(i = 1;i < 10;i += n){ for(j = i - n;j >= 0;j -=n){ if(data[j] > data[j+n]){ temp = data[j]; data[j] = data[j+n]; data[j+n] = temp; } } } } for(i = 0;i < 10;i ++){ printf("%d ",data[i]); } printf("\n"); return 0; }
相關推薦
希爾排序C語言版
希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本. 希爾排序的基本思想就是:將需要排序的序列劃分為若干個較小的序列,對這些序列進行直接插入排序,通過這樣的操作可使需要排序的數列基本有序,最後再使用一次直接插入排
【演算法】希爾排序C語言實現
上一篇文章我們一起學習了直接插入排序,它的原理就是把前i個長度的序列變成有序序列,然後迴圈迭代,直至整個序列都變為有序的.但是說來說去它還是一個時間複雜度為(n^2)的演算法,難道就不能再進一步把時間複雜度降低一階麼?可能有很多同學說快速排序,堆排序,我都會,這些簡單的插
希爾排序--C語言
近期由於身體不適,好久不曾寫部落格了。但是覺得生病不應該成為不學習的藉口,所以今天開始還是繼續自己的學習之旅。因為一旦停的時間久了,藉口會越來越多,最後重蹈覆轍,之前的努力又白費了。 今天寫的是希爾排序。希爾排序是插入排序的一種。它將待排序的陣列按照一定間隔分為若干個子序列,對每個子
希爾排序C語言
思路:希爾排序,屬於插入排序的一種,將無序序列中相隔n個元素的元素看作一組,進行簡單插入排序,然後n-1,繼續這樣做,當n = 1時,就是直接插入排序。時間複雜度O(n^1.3),不穩定。#includ
希爾排序C/C++
長度 ID spa space 等於 算法分析 font 處理 分析 void ShellSort(int a[],int left,int right); //對a[left]到a[right]從小到大排序 void ShellSort(int a[],int lef
【初探】“ 希爾排序 ”—— C++程式碼實現
目錄 希爾排序演算法介紹 希爾排序的基本思想 希爾排序的演算法效能 時間複雜度 直接插入排序和希爾排序的比較 希爾排序演算法介紹 ● 希爾排序是希爾(Donald Shell)於
排序演算法c語言描述---希爾排序
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
C語言中常用排序演算法(氣泡排序、選擇排序、插入排序、希爾排序、快速排序、堆排序)實現比較
以下程式在win10 X64位作業系統,使用VS2017執行驗證可行 排序是非常重要且很常用的一種操作,有氣泡排序、選擇排序、插入排序、希爾排序、快速排序、堆排序等多種方法。 例項1 冒泡法排序 1.前言: 陣列中有N個整數,用冒泡法將它們從小到大(或從大到小)排序。冒泡法
希爾排序演算法(縮小增量排序)及C語言實現
希爾排序,又稱“縮小增量排序”,也是插入排序的一種,但是同前面幾種排序演算法比較來看,希爾排序在時間效率上有很大的改進。 在使用直接插入排序演算法時,如果表中的記錄只有個別的是無序的,多數保持有序,這種情況下演算法的效率也會比較高;除此之外,如果需要排序的記錄總量很少,該演算法的效率同樣會很高。希爾排序就是
C語言實現排序演算法---希爾排序
今天又重新研究了一遍諸多排序演算法,現在簡單分享一下里面的希爾排序(Shell Sort)的心得。 希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種
資料結構之---C語言實現希爾排序
wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------
有趣的演算法(七):3分鐘看懂希爾排序(C語言實現)
在上一次的演算法討論中,我們一起學習了直接插入排序。它的原理就是把前i個長度的序列變成有序序列,然後迴圈迭代,直至整個序列都變為有序的。但是說來說去它還是一個時間複雜度為(n^2)的演算法,難道就不能再進一步把時間複雜度降低一階麼?確實,以上幾種演算法相對於之前的O(n^2)
c語言實現希爾排序
自己看書時,對希爾排序的理解一直處於茫然狀態,然後在維基百科上看到了這樣一句話,再加上這樣一個例子,總算消除了我的迷惑。 因為訪問危機百科需要翻牆,故複製了了相關內容在本部落格裡,若讀者已翻牆,可以直接點此進入維基百科檢視。 ------------------------
排序系列之(4)希爾排序及C語言實現
希爾排序(Shell Sort)也稱為遞減增量排序演算法,是插入排序的一種高速而安定的改良版。因希爾(Donald L. Shell)於1959年提出而得名。各種實現在如何進行遞減上有所不同。 希爾排序是基於插入排序的以下兩點性質而提出改進方法的: 插入排序在對幾乎已經排好序的資料操作時, 效率高, 即可以達
希爾排序(C語言)
希爾排序是一種插入排序法,它出自D.L.Shell,因此而得名。Shell排序又稱作縮小增量排序。 基本思想: 不斷把待排序的物件分成若干個小組,對同一小組內的物件採用直接插入法排序,當完成了所有物件都分在一個組內的排序後,排序過程結束。每次比較指定間距的
常見演算法:C語言中的排序演算法--氣泡排序,選擇排序,希爾排序
氣泡排序(Bubble Sort,臺灣譯為:泡沫排序或氣泡排序)是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小
C語言實現直接插入排序,氣泡排序,選擇排序,希爾排序,快排
直接插入演算法,每次將未排序的第一個元素插入到前半部分以及排好序的元素中。關鍵是要在已排好的部分進行移位操作。//直接插入排序演算法 void InsertSort(int a[],int n) { for (int i = 1; i < n; i++) {
希爾排序(Go語言)
bsp color 數組下標 bre class else i++ 由於 emp func ShellSort(num []int) { //increment相隔數量 for increment:=len(num)/2;increment>0 ;
C數據結構排序算法——希爾排序法用法總結(轉http://www.cnblogs.com/skywang12345/p/3597597.html)
spa 一半 pub nbsp 時間復雜度 每一個 ati 數組長度 插入排序算法 希爾排序介紹 希爾排序(Shell Sort)是插入排序的一種,它是針對直接插入排序算法的改進。該方法又稱縮小增量排序,因DL.Shell於1959年提出而得名。 希爾排序實質上是一種分組插
資料結構——排序與查詢(2)——希爾排序(C++實現)
希爾排序原理 希爾排序(Shell’s Sort),也稱為“縮小增量排序”,是一種插入排序類的演算法。最簡單的插入排序,我在上一個專欄的一篇文章C++抽象程式設計——演算法分析(8)——插入排序演算法與分析有提到過,這裡就不再贅述,這裡就只介紹一些我以前沒寫過的演算法。 希爾排序是一