Shell排序演算法及C語言實現

2021-06-26 12:22:01 字數 508 閱讀 6964

shell排序演算法是d.l.shell於2023年發明的,其基本思想是:先比較距離遠的元素,而不是像簡單交換排序演算法那樣先比較相鄰的元素。這樣可以快速減少大量的無序情況,從而減輕後續的工作。被比較的元素之間的距離逐步減少,直到減少為1,這時排序變成了相鄰元素的互換。該方法實質上是一種分組插入排序方法。

先貼**。

/*shellsort函式:按遞增順序對v[n]陣列進行排序*/

void shellsort(int v,int n)

}

以v[10]=為例,

第乙個外迴圈,gap=5,分別比較(v[0],v[5]),(v[1],v[6]),(v[2],v[7]),(v[3],v[8]),(v[4],v[9]),結果為。

第二個外迴圈,gap=2,分別比較(v[0],v[2],v[4],v[6],v[8]),(v[0],v[2],v[4],v[6],v[8]),即分別對其進行插入排序,結果為。

第三個外迴圈,gap=1,結果為。

排序演算法(C語言實現)

本文共介紹了7種排序演算法 參考文章 1.1 基本思想 依次向後兩兩相鄰比較,大的向後移 1.2 示例 void bubblesort int a,int n 2.1 基本思想 從無序佇列中選擇最小值,放置到有序佇列的末尾 2.2 示例 void selectsort int a,int n a j...

常見排序演算法總結及C語言實現

一直沒有好好的扎扎實實的演算法的基礎,要找工作了,臨時抱下佛腳,順便把學的東西整理下,以應對比較健忘的大腦。廢話不說,直接主題,其實整理這個,借鑑了不少這個blog,在此再次感謝這個博主,但願有一天,自己也能請博主喝杯咖啡 哈哈 先從最熟悉的氣泡排序開始吧 氣泡排序 bubblesort 氣泡排序也...

快速排序及C語言實現

快速排序演算法最壞複雜度很差,相當於插入排序,但是平均效能很好,甚至大多數時候優於堆排序和歸併排序,並且是一種內排序演算法,因此在實際中往往用的最多。快速排序的步驟 將陣列a p.r 劃分為兩個子陣列a p.q 1 和a q 1.r 使得前者的每個元素小於等於a q 後者的每個元素大於等於a q 然...