C語言高階 排序

2021-10-01 03:35:07 字數 1551 閱讀 2646

sunshine__sunny的快樂碼奴生活

氣泡排序

插入排序

選擇排序

快速排序

排序實現方式:

(程式裡面盡量做到迴圈層級少於等於兩個 )

實現方式

具體演算法

第二層迴圈控制每次遍歷需要遍歷多少次才能找到最大值

#include

intmain()

;for

(int i =

1;i <

10;i++

)//for(int i = 0;i < 10-1;i++)也可 }}

//輸出

for(

int i=

0;i<

10;i++

)return0;

}

#include

intmain()

;for

(int i =

0;i <10-

1;i++)}

//當前temp值寫入i的位置

num[i]

= temp;

}for

(int i =

0; i <

10; i++

)return0;

}

工作原理

具體演算法

從第乙個元素開始,該元素可以認為已經被排序

取出下乙個元素,在已經排序的元素序列中從後向前掃瞄

如果該元素(已排序)大於新元素,將該元素移到下一位置

重複步驟3,直到找到已排序的元素小於或者等於新元素的位置

將新元素插入到該位置後

重複步驟2~5

如果比較操作的代價比交換操作大的話,可以採用二分查詢法來減少比較操作的數目。該演算法可以認為是插入排序的乙個變種,稱為二分查詢插入排序。

#include

intmain()

;for

(int i =

0; i <10-

1;i++

)//控制次數}}

}for

(int i =

0; i <

10;i++

)return0;

}

工作原理

使用分治法策略來把乙個序列分為兩個子串行

具體演算法

從數列中挑出乙個元素,稱為「基準」

重新排序數列,所有比基準值小的元素擺放在基準前面,所有比基準值大的元素擺在基準後面(相同的數可以到任何一邊)。

在這個分割槽結束之後,該基準就處於數列的中間位置。這個稱為分割槽操作。

遞迴地把小於基準值元素的子數列和大於基準值元素的子數列排序。

遞迴到最底部時,數列的大小是零或一,也就是已經排序好了。這個演算法一定會結束,因為在每次的迭代中,它至少會把乙個元素擺到它最後的位置去。

以上的排序方法需要能夠至少熟練掌握乙個

C語言高階 基於陣列的排序

普通選擇排序 1 實現原理和思想 公升序 1 在未排序的陣列中,選擇首元素與其後元素進行比較,若其後元素比首元素大,則兩元素交換,直至比較到最後乙個元素,這是第一輪比較,得到首元素有序。2 接下來從第2個,第3個元素 重複1 的步驟,直至剩下最後乙個元素,則最後乙個元素也是有序,是本組元素的最大值。...

C語言 高階指標

import import myfunction.h 巨集後面不要加分號 define kimagewidth 200 define kimageheight 200 有引數的巨集 define kmax a,b a b a b 加上括號 define kmul a,b a b define and...

C語言的高階

編譯命令 gcc wall hello.c o hello注 選項 wall 開啟編譯器幾乎所有常用的警告 強烈建議你始終使用該選項。編譯器有很多其他的警告選項,但 wall 是最常用的。預設情況下 gcc 不會產生任何警告資訊。當編寫 c 或 c 程式時編譯器警告非常有助於檢測程式存在的問題。執行...