氣泡排序和選擇排序是最基本的排序方式,要掌握。
氣泡排序重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。
選擇排序每一趟從待排序的
資料元素
中選出最小(或最大)的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。
選擇排序
是不穩定的排序方法。
舉個例子來說明,相信大家都軍訓過,沒軍訓過的也排隊過。以軍訓來說,在一開始的報道的時候,大家排成一排時,是參差不齊,高矮摻雜,教官看了這個心情肯定很不爽要求你們從低到高排列。
氣泡排序:從第乙個人開始比較,no1和no2比較,如果no1比no2高,那麼兩個人交換順序,知道最後乙個,最高的肯定在最後面了,這時候重新從第乙個人開始比較,直到倒數第二個,因為最後乙個已經排完了。(**是從最後比上來,思想是一樣的)
ps:假如那個最高個的在第乙個,那麼一直比較下去,他會一直和後面的人換位置,就好像冒泡泡似的,所以這就是氣泡排序。
雙向氣泡排序:顧名思義,就是從兩邊氣泡排序,在同一趟比較中,從前面比較的,將高的頂到後面去,從後面比較的,將矮的頂到前面來。
選擇排序:還是從第乙個人開始,依次和後面的人比較,但是這個時候不交換位置,只是記錄最矮那個人的位置(比如第五個)一直比較到最後乙個人,然後將第五人和第一人交換位置,接下來從第二個人開始依次比較下去。
----------------------
更新:忘記說穩定排序和不穩定排序了。
穩定排序的意思是,小東和小明一樣高,在排序前,小東是站在小明前面的,排序後,小東還是站在小明前面。
不穩定排序則是排序後小東跑到小明後面去了。
#include#define n 10void bubblesort(int *bs , int n)}}
}void selectionsort(int *ss, int n)
//k!=i則說明,有更小的數在後面,把它換到前面來
if(k!=i)
}}void bubbletwo( int *p , int n)
if( p[high+low-i] < p[high+low-i-1])
}low=low_point;
high=high_point;
}}void printarray(int *p)
{ int i;
for(i=0;i
選擇排序,氣泡排序,雙向氣泡排序
首先是選擇排序,原理 1 找到未排序的數中最小的數放到最前面 2 陣列後移一位 3 重複上面兩部。void selectsorting if min a i swap b i b t 這個應該是我第乙個接觸到的排序演算法,結果第一次打排序水題直接上冒泡,直接接了一發tle 才知道有nlogn的演算法...
氣泡排序 與 雙向氣泡排序
public class test if k 0 break last k public static void bidirectionalbubblesort int a last k for int m last m first m first k if first last break pub...
雙向氣泡排序
這是完全自主編碼,哈哈。但是思想還是書上先有的,但是沒有具體 下面是執行結果截圖,輸入的為23 45,2,15,9 冒牌排序流程如下,一次正向冒泡,從左至右。然後一次反向冒泡,從右至左。第一次把最大的記錄放到表尾,第二次將最小記錄放到表頭,如此反覆。pos 0 記錄無序序列的第乙個位置0,pos 1...