資料結構 C語言實現希爾排序

2021-07-04 17:12:16 字數 837 閱讀 7991

一、希爾排序簡介

先將整個待排元素序列分割成若干個子串行(由相隔某個「增量」的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,

二、c語言**實現

#include 

/* 將兩個資料交換 */

void swap(int* ina , int* inb)

/** 函式功能:希爾排序,把資料從小到大排序

* 引數解釋: inarray 輸入的陣列

* inlen 輸入的陣列的長度

*/int shellsort(int* inarray,int inlen)

else}}

}}

return0;}

int main()

; int

index = 0;

int len = sizeof(a)/sizeof(int);

/* 先遍歷列印一下陣列的元素 */

for(index = 0; index

< len; index++)

printf("\n");

/* 呼叫希爾排序函式 */

shellsort(a,len);

/* 再遍歷列印一下陣列的元素 */

for(index = 0; index

< len; index++)

printf("\n");

return

0;}

資料結構C語言實現 希爾排序

希爾排序 這方法太噁心了,可以和冒泡 直插 選擇進行組合,就是希爾排序裡要內嵌其他排序,可是再希爾排序裡實現其他排序,要進行一些腦筋急轉彎的改變,所以剛學的時候肝了一天才弄明白 大體說一說思路吧,以內嵌氣泡排序為例 加入這裡有乙個無序數字串 9876543210 我們要給他分組,一般會把總長除以二作...

資料結構 C語言實現排序演算法 希爾排序

希爾排序 又稱 縮小增量排序 基本思想 先將待排序列分為若干個子串行分別進行直接插入排序,待整個序列 基本有序時 再對整個序列進行一次直接插入排序。圖例 由圖例可以看出 希爾排序是通過不斷的縮小增量來實現排序的方法。c 實現 void shellsort int arr,int left,int r...

希爾排序 C語言實現

希爾排序 shell s sort 又稱 縮小增量排序 diminishing increment sort 是插入排序的一種,因d.l.shell 於1959 年提出而得名。直接插人排序,當待排序的記錄個數較少且待排序序列的關鍵字基本有序時,效率較高。希爾排序基於以上兩點,從 減少記錄個數 和 序...