經典排序演算法

2022-03-11 07:38:32 字數 1797 閱讀 9778

1.氣泡排序:穩定

int* bubblesort1(int* a, int

n) }

}return

a;}

2.選擇排序:不穩定

int* selectionsort(int* a, int

n)

if(min!=a[i])

}return

a; }

3.插入排序

int* insertionsort(int* a, int

n)

return

a;}

1.歸併排序

void merge1(int* a,int p,int q,int

r) }

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, int

n) 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 原理 用乙個索引位置上的元素,...