幾種排序演算法

2021-07-07 05:21:14 字數 671 閱讀 9945

//

插入排序

void sort(int a,inta_size)

a[++j]=key;

}printf("\n");

print(a,a_size);

}插入排序的設計思想就是按照從陣列a[1]開始(當然也可以從0開始只不過從0開始會多加乙個判斷得不償失),每次迴圈所要加入的元素,如果大於前乙個元素,就直接加入,否則就將將前面已經排好序的陣列向後推,一直推到前面的元素小於當前所要加入的元素,一直插入,直至整個陣列結束。 //

希爾排序

void sort(int *a,intn)

a[j+mid]=key;

}mid=mid/2;}}

希爾排序的設計思想就是在插入排序的設計思想上不斷的跳躍,避免了極端情況的發生(陣列要大規模的向右移)。其本質和插入排序差不多。 //

歸併排序

void sort(int *a,int*c,int start,intend)

if(end==start)

}void merge(int *a,int *b,int start,int mid,int end)

else }

while(i<=mid)

while(j<=end)

}歸併排序的設計思想就是將整個陣列切割成乙個個小塊,然後將小塊排好序,再直接合併。

幾種排序演算法

幾種比較常見的排序演算法 第一種 函式功能 雙向氣泡排序 2013.7.8 時間複雜度o n 2 include void mp int array,int n if mmax 0 沒有記錄交換,掃瞄結束 break bmax mmax for i bmax 1 i bmin i 此次掃瞄使輕氣泡上...

幾種排序演算法

本帖依據學習進度持續更新 資料結構與演算法分析 c語言描述 學到第七章,是時候該系統的學習一下排序演算法了。首先學到的是插入排序,演算法就不贅述了,書上部落格上到處都有。書上的兩個定理還不太明白 插入排序 定理7.1 n個互異數的陣列的平均逆序數是n n 1 4。定理7.2 通過交換相鄰元素進行排序...

幾種排序演算法

最近一直在複習演算法,在經歷了四次面試之後,還沒有找到適合自己的工作 暫時歇一歇,準備冬天去北京創業一條街吹泡泡去。在面試過程中主要提及的就是對於排序演算法的疑問 主要針對以下幾種排序演算法 1,氣泡排序 2,插入排序 3,選擇排序 4,希爾排序 5,歸併排序 6,快速排序 7,堆排序 對於基數排序...