【資料結構】希爾排序
希爾排序的原理參見,維基百科,http://zh.wikipedia.org/wiki/希爾排序,這裡給出原始碼。
#include<stdio.h>
void ShellSort(int a[], int n)
{
int i,j,k,temp,gap;
int gaps[]={1,5,13,43,113,297,815,1989,4711,11969,27901,84801,
213331,543749,1355339,3501671,8810089,21521774,
58548857,157840433,410151271,1131376761,2147483647};
for (k=0; gaps[k]<n; k++) ;//取到遞增步長裡最大的一個
while(--k >= 0)
{
gap = gaps[k];
for ( i = gap; i < n; i++ )
{
j = i - gap;
temp = a[i];
while (( j >= 0 ) && ( a[j] > temp ))
{
a[j + gap] = a[j];
j = j - gap;
}
a[j + gap] = temp;
}
}
}
int main()
{
int i;
int a[9]={9,1,5,8,3,7,4,6,2};
ShellSort(a,9);
for(i=0 ; i<9 ;i++)
{
printf("%d ",a[i]);
}
}
相關文章
- 【PHP資料結構】插入類排序:簡單插入、希爾排序PHP資料結構排序
- python演算法與資料結構-希爾排序(35)Python演算法資料結構排序
- 資料結構上機——希爾排序(含監視哨版本)資料結構排序
- 對資料結構和演算法的總結和思考(三)--希爾排序資料結構演算法排序
- SpringCloud大型企業分散式微服務雲架構原始碼之【資料結構】-排序-希爾排序SpringGCCloud分散式微服務架構原始碼資料結構排序
- 希爾排序排序
- 理解希爾排序排序
- Java希爾排序Java排序
- 希爾排序(一)排序
- 希爾排序(二)排序
- 希爾排序(Shell Sort)排序
- C++希爾排序C++排序
- 希爾排序(C++)排序C++
- 排序演算法__希爾排序排序演算法
- 【排序演算法】- 希爾排序排序演算法
- 希爾排序——重溫排序(二)排序
- 【資料結構與演算法】高階排序(希爾排序、歸併排序、快速排序)完整思路,並用程式碼封裝排序函式資料結構演算法排序封裝函式
- C#資料結構與演算法系列(二十一):希爾排序演算法(ShellSort)C#資料結構演算法排序
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- PHP 排序演算法之希爾排序PHP排序演算法
- 排序演算法:Java實現希爾排序排序演算法Java
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- JavaScript希爾排序簡單介紹JavaScript排序
- rust-algorithms:14-希爾排序RustGo排序
- 第二章 :查詢與排序-------希爾排序排序
- 資料結構與排序資料結構排序
- 【演算法】希爾排序的實現演算法排序
- python實現希爾排序演算法Python排序演算法
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 資料結構32:選擇排序資料結構排序
- 資料結構之計數排序資料結構排序
- 資料結構第10章 排序資料結構排序
- 程式猿修仙之路--演算法之希爾排序演算法排序
- 【譯】Swift演算法俱樂部-希爾排序Swift演算法排序
- 基礎演算法系列 之希爾排序演算法排序
- 資料結構(python) —— 【18排序: 桶排序】資料結構Python排序
- 資料結構--排序--插入排序--python語言描述資料結構排序Python