1.氣泡排序:穩定
int* bubblesort1(int* a, intn) }
}return
a;}
2.選擇排序:不穩定
int* selectionsort(int* a, intn)
if(min!=a[i])
}return
a; }
3.插入排序
int* insertionsort(int* a, intn)
return
a;}
1.歸併排序
void merge1(int* a,int p,int q,intr) }
int* mergesort1(int* a,int p,int
r)
return
a;}
2.快速排序
void exchange(int* a1,int*a2)int partition(int* a,int p,int
r) }
exchange(a+i+1,a+r);
return i+1
; }
int* quicksort1(int* a,int p,int
r)
return
a; }
int* quicksort(int* a, int
n)
3.shell排序
int* shellsort(int* a, intn) a[j+h]=key;}}
return
a; }
4.堆排序
void swap(int *a,int*b)void percdown(int* a,int i,int
n) a[parent]=key;
}//s(n)=o(1)int* heapsort(int* a, int
n)
return
a; }
}
3.空間複雜度分析
o(1):氣泡排序,選擇排序,插入排序,希爾排序,堆排序
o(n):歸併排序
不確定:快速排序,與基準的選擇和劃分實現有關。
4.排序演算法的穩定性
穩定性:指相同的元素在排序後其先後順序不變。
穩定演算法:冒泡,插入,歸併,計數,基數,桶排序
不穩定演算法:選擇,快速,希爾,堆排序
5.關於快速排序的說明
快速排序並不一定比歸併和堆排序優良,在最好情況下,他們的複雜度相同,只是快排的常量係數較小。
6.工程上的排序
1.工程上使用綜合排序
2.陣列小時,一般會使用常量係數低的插入排序
3.陣列較大時,考慮快排等n*logn排序。
經典排序演算法
排序分為內部排序和外部排序,內部排序是指待排序的資料都是在記憶體中的,例如陣列 外部排序指待排序資源在記憶體外,例如對檔案的排序。此篇說的是內部排序。通俗地來說,內部排序就是將一堆資料按一定規則對它進行排序。排序又分為穩定排序和不穩定的排序,如果初始序列ai,ak有序 ai ak 排序後變成了ak,...
經典排序演算法
1 氣泡排序 bubble sort 最簡單的排序方法是氣泡排序方法。這種方法的基本思想是,將待排序的元素看作是豎著排列的 氣泡 較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個 氣泡 序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。...
經典排序演算法
思想 相鄰元素兩兩比較大的往下沉,小的往上浮.具體點說就是兩相鄰元素相互比較,如果前面的元素比後面的大就換位置,否則繼續比較.舉個例子吧 將陣列arr 排序 廢話了那麼多,接下來是應該有 的對吧public static void bulletsort int arr 原理 用乙個索引位置上的元素,...