氣泡排序的基本思想:每次比較兩個相鄰的元素,如果他們順序錯誤把他們交換。
演算法步驟
1)比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
2)對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
3)針對所有的元素重複以上的步驟,除了最後乙個。
4)持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
void
bubble_sort
(int num,
int len)}}
}
演算法步驟
(1)以集合第乙個元素為基準,進行劃分,將小與它的元素放在它左邊,將大於它的元素放在它右邊
(2)將左邊元素的區間、右邊元素的區間遞迴進行劃分
(3)重複(1)(2),直至子區間不能再劃分為止
實現**
void
quicksort
(int a,
int left,
int right)
a[i]
= t;
//遞迴執行劃分
quicksort
(a, left, i -1)
;quicksort
(a, i +
1, right)
;}
基本思想:將排序區間分成有序區和無序區兩個區間,每次選取無序區的第乙個元素插入到有序區
演算法步驟:
(1)選取無序區中第乙個元素i
(2)將i與有序區中元素j(0 <= j <= i-1)比較,尋找插入位置,同時移動元素
(3)將該元素插入合適位置
(4)重複(1)(2)(3)直至無序區長度為0
void
insertsort
(int a,
int n)
a[j +1]
= t;
//插入元素到有序區
}}
實現原理
假定有1-100個編號的桶(也就是定義乙個長度為100的整型一維陣列),每輸入乙個數字·就在對應的桶上插乙個小旗(也就是對應下標的桶加1次),如果這個數字出現了n次就在對應桶上插n個小旗,當所有數輸入完畢時,只需要從下標1開始找那些數字是1,如果是1就列印1次,是2就列印2次,是多少就列印多少次。
**實現
void
test
(int a,
int n)
;for
(int i=
0; i++i)
s[a[i]]++
;for
(int i=
0; i<10;
++i)
for(
int j=
0; j;++j)
printf
("%d "
,i);
}
《啊哈!演算法》強烈推薦! 排序(冒泡 直接插入 選擇)
從小到大 int j,temp for int i 0 i arr.length 1 i else if j將乙個記錄插入到已排好序的有序表中,從而得到乙個新的 記錄數增1的有序表,再從剩下的關鍵字中選取下乙個插入物件 for int i 0 i arr.length i arr j temp co...
資料結構排序,冒泡,快速,直接選擇,直接插入,希爾
交換排序 1.氣泡排序 public class sort 氣泡排序 public void bubble int a public static void main string args sort bs new sort bs.bubble a for int i 0 i 2.快速排序 第一步,...
排序之 冒泡,直接插入,選擇排序
學過程式設計的應該都知道,排序演算法有很多種,想把每種演算法的基本思想搞懂弄清確實得下一番功夫,今天我先介紹幾種簡單的,氣泡排序,直接插入排序和選擇排序,一定要弄清楚每種方法基本思想的差異。1,氣泡排序 公升序 基本思想 相鄰的兩個元素進行比較,如果前乙個元素大於後乙個元素,則交換二者位置,接著繼續...