欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

C語言

C語言插入排序算法及實例代碼

時間:2025-02-19 17:15:55 C語言 我要投稿
  • 相關推薦

C語言插入排序算法及實例代碼

  插入排序是排序算法的一種,下面小編為大家整理了C 語言插入排序算法及實例代碼,希望能幫到大家!

  這里以從小到大排序為例進行講解。

  基本思想及舉例說明

  插入排序的基本思想是,將元素逐個添加到已經(jīng)排序好的數(shù)組中去,同時要求,插入的元素必須在正確的位置,這樣原來排序好的數(shù)組是仍然有序的。

  在實際使用中,通常是排序整個無序數(shù)組,所以把這個無序數(shù)組分為兩部分排序好的子數(shù)組和待插入的元素。第一輪時,將第一個元素作為排序好的子數(shù)組,插入第二個元素;第二輪,將前兩個元素作為排序好的數(shù)組,插入第三個元素。以此類推,第i輪排序時,在前i個元素的子數(shù)組中插入第i+1個元素。直到所有元素都加入排序好數(shù)組。

  下面,以對 3 2 4 1 進行選擇排序說明插入過程,使用j記錄元素需要插入的位置。排序目標是使數(shù)組從小到大排列。

  第1輪

  [ 3 ] [ 2 4 1 ] (最初狀態(tài),將第1個元素分為排序好的子數(shù)組,其余為待插入元素)

  [ 3 ] [ 2 4 1 ] (由于3>2,所以待插入位置j=1)

  [ 2 3 ] [ 4 1 ] (將2插入到位置j)

  第2輪

  [ 2 3 ] [ 4 1 ] (第1輪排序結果)

  [ 2 3 ] [ 4 1 ] (由于2<4,所以先假定j=2)

  [ 2 3 ] [ 4 1 ] (由于3<4,所以j=3)

  [ 2 3 4 ] [ 1 ] (由于4剛好在位置3,無需插入)

  第3輪

  [ 2 3 4 ] [ 1 ] (第2輪排序結果)

  [ 2 3 4 ] [ 1 ] (由于1<2,所以j=1)

  [1 2 3 4 ] (將1插入位置j,待排序元素為空,排序結束)

  算法總結及實現(xiàn)

  選擇排序對大小為N的無序數(shù)組R[N]進行排序,進行N-1輪選擇過程。首先將第1個元素作為已經(jīng)排序好的子數(shù)組,然后將剩余的N-1個元素,逐個插入到已經(jīng)排序好子數(shù)組;。因此,在第 i輪排序時,前i個元素總是有序的,將第i+1個元素插入到正確的位置。

  #include#include#define N 8void _sort(int a[],int n);//插入排序實現(xiàn),這里按從小到大排序void _sort(int a[],int n)//n為數(shù)組a的元素個數(shù){ //進行N-1輪插入過程 for(int i=1; i<n; i++) { //首先找到元素a[i]需要插入的位置 int j=0; while( (a[j]<a[i]) && (jj; k--) { a[k] = a[k-1]; } a[j] = temp; } }}int main(){ int num[N] = {89, 38, 11, 78, 96, 44, 19, 25}; _sort(num, N); for(int i=0; i<N; i++) printf("%d ", num[i]); printf("n"); system("pause"); return 0;}

  注意:插入排序是一種穩(wěn)定的排序算法,不會改變原有序列中相同數(shù)字的順序。

  插入排序是在一個已經(jīng)有序的小序列的基礎上,一次插入一個元素。當然,剛開始這個有序的小序列只有1個元素,就是第一個元素。比較是從有序序列的末尾開始,也就是想要插入的元素和已經(jīng)有序的最大者開始比起,如果比它大則直接插入在其后面,否則一直往前找直到找到它該插入的位置。如果碰見一個和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后順序沒有改變,從原無序序列出去的順序就是排好序后的順序,所以插入排序是穩(wěn)定的。

【C語言插入排序算法及實例代碼】相關文章:

C++插入排序算法實例06-02

C語言選擇排序算法及實例代碼07-25

C語言奇偶排序算法詳解及實例代碼04-05

c#實現(xiàn)輪詢算法實例代碼05-31

C語言快速排序算法及代碼06-25

C語言快速排序實例代碼02-26

C語言冒泡排序算法實例06-15

C#實現(xiàn)協(xié)同過濾算法的實例代碼06-19

C語言合并排序及實例代碼04-02