(c語言)選擇排序法和氣泡排序法

2021-07-01 22:43:37 字數 989 閱讀 1105

問題描述:

給定乙個陣列(或者輸入乙個陣列),分別運用選擇排序法和氣泡排序法將所要的結果輸出。

程式分析:

選擇排序

1>.

對於選擇排序,首先理解排序的思想。給定乙個陣列,這種思想首先假定陣列的首元素為最大(最小)的。此時就要利用3個變數i,j,k表示元素的下標。i表示當前,j表示找到的最大(最小)的下標,k用於存放每次迴圈中最大值的下標。

2>.

在掌握了程式的基本思想之後,再進行排序。找到最大的下標後賦給k。找到之後判斷所假設的當前值是否為此次迴圈的最大值,如果不是,就交換a[k] 與當前a[i]的值,從而將陣列以一定的順序排放,最後寫乙個迴圈將結果輸出。

氣泡排序

1>.

對於氣泡排序,主要採用的是相鄰數兩兩進行比較的思想。如果後乙個比前乙個大(小),則將其調換位置,直至所有的數都比較完。

2>.

如果給定乙個大小為n的陣列,那麼需要比較n-1趟,每一趟比較n-1-i次 ,i 表示上次迴圈中已經比較完的下標。寫兩個迴圈 判斷,如需交換則進行交換,如果不需要交換則進行下兩個數的比較,直到所有的數比較完。最後,用乙個迴圈將排序完成後的數全部輸出。

程式如下:

/*********************選擇排序******************************/

/*#includeint main()

; //定義了乙個9個數的陣列,並且初始化

int len = sizeof(a)/sizeof(a[0]); //len是陣列的大小

for(i = 0;ia[k]) //將假設的當前最大值與後面的值比較

},當前最大值

if(k != i) //比較之後如果此次迴圈中最大值並非當前值

}for(i=0;iint main()

; int len = sizeof(a)/sizeof(a[0]);

for(i = 0;ia[j])

}} for(i = 0;i

c語言選擇排序 選擇排序法 C語言

直接選擇排序的基本思想 n個記錄的直接選擇排序可經過 n 1 趟直接選擇排序得到有序結果。初始狀態 無序區為 a 1.n 有序區為空。第 1 趟排序 在無序區 a 1.n 中選出最小的記錄a k 將它與無序區的第 1 個記錄 a 1 交換,使 a 1 1 和 a 2.n 分別變為記錄個數增加1的新有...

C語言選擇法排序

思路 通過反覆求最大值進行排序 a,一組數有n個數 b,通過比較前乙個數值與後乙個數值,找出其中最大的數,放在a 0 中 c,通過比較前乙個數值與後乙個數值,找出第二大數,放在a 1 中 d,通過比較前乙個數值與後乙個數值,最後最小的數,放在a n 1 中 如果前值小於後值,則進行值替換 最多有n ...

選擇排序法和氣泡排序法

例題 自定義函式,從鍵盤輸入n個數,對它進行從小到大的排序,要求從主函式輸出排序的結果。方法一 氣泡排序法 include define n 10 using namespace std int main void bubble sort int a 氣泡排序法分析 先從第乙個元素開始,各位相鄰元素...