對一組元素進行氣泡排序,從左向右或從右向左排序,每次對相鄰兩個數進行比較,根據自己需求(公升序或者降序)決定是否調整順序。每次完成一次冒泡,都在未排序列中會產出乙個最大或最小值並將該值確定位置
1.如果是將序列從右向左兩兩比較,那麼每次冒出的最大數或者最小數將出現在最左邊(在未排序的序列前面)
2.如果序列是從左向右兩兩比較,那麼每次冒出的最小數或最大數出現在最右邊(未排序的最後面)
(至於每次冒出的是最大值還是最小值取決於公升序還是降序)
void
bubblesort
(int array,
int size)}if
(0== flag)
//,當某次冒泡一次交換都沒有發生交換,說明已經完全有序,因此不必再進行排序
}}
注:加入flag標記符優化該排序,當某次冒泡完時,並沒有改變這組元素的序列,說明該序列已經完全有序。
從一端開始,在每個元素位置處遍歷其餘元素,選出最大或最小數在該位置,直至所有位置都確定好對應的數
void
selectsort
(int array,
int size)
//從小到大排序}}
}
#include
#include
void
swap
(int
*a,int
*b)void
bubblesort
(int array,
int size)}if
(0== flag)
//,當某次冒泡一次交換都沒有發生交換,說明已經完全有序,因此不必再進行排序}}
//選擇排序
void
selectsort
(int array,
int size)
//從小到大排序}}
}int
main()
;int n =
sizeof
(arr)
/sizeof
(arr[0]
);//bubblesort(arr, n);
selectsort
(arr, n)
;printf
("公升序排列後:");
for(
int i =
0; i < n; i++
)printf
("\n");
system
("pause");
return0;
}
總結一下就是:
選擇排序是給位置找合適的數,就像你找女朋友哈;氣泡排序是給數(隨波逐流中)找合適的位置,半生漂泊無處安家;
演算法之旅 氣泡排序及選擇排序
氣泡排序和選擇排序是排序演算法中比較簡單的兩種演算法。氣泡排序的思想是 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,針對所有的元素重複以上的步驟,這樣每次參與比較的元素就越來越少,直到沒有任何一對數字需要比較。對n個數字進行氣泡排...
陣列及排序(冒泡 選擇 快速排序)
1.陣列 使用單獨的變數名來儲存一系列的值 簡單的說,陣列的作用,就是乙個容器,將多個資料儲存起來 2.宣告陣列的方法 字面量 var arr eg var arr 兔子1 兔子2 兔子3 兔子4 console.log arr 建構函式方法 var arr new array 如果引數為乙個數值 ...
選擇排序,氣泡排序,雙向氣泡排序
氣泡排序和選擇排序是最基本的排序方式,要掌握。氣泡排序重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。選擇排序每一趟從待排序的 資料元素 中選出最小 或最大 的乙個元素,順序放在已排好序的數列的...