七大排序演算法

2021-07-04 22:06:23 字數 1968 閱讀 1170

// 氣泡排序 

void bubble(int a,int n) 

} }

}

// 選擇排序 

void select_sort(int a, int n)//n為陣列a的元素個數 

// 將第i 小的數,放在第i 個位置;如果剛好,就不用交換

if ( i != min_index)

} }

// 插入排序 

typedef int elementtype; 

void insertionsort(elementtype a, int n)

} index = j + 1;

for (k = i - 1; k >= index; k--)

a[k+1] = a[k];

a[index] = tmp;

}*/

// 優化

for (i = 1; i < n; i++)

a[j+1] = tmp;

} }

//  希爾排序:縮小增量排序 

typedef int elementtype; 

void shellsort(elementtype a, int n)

a[j] = tmp;

} }

}

// 堆排序 

// 交換兩個int 型別變數的內容 

void swap(int *x, int *y)

// 下沉(大根堆)

void sink(int k, int a, int n) }

// 建大根堆

void buildheap(int a, int n) }

// 堆排序

void heapsort(int a, int n)

}

// 歸併排序 

// 合併兩個有序的部分

void merge(int a, int tmparray, int lpos, int rpos, int rightend)

while (lpos <= leftend)

tmparray[tmppos++] = a[lpos++];

while (rpos <= rightend)

tmparray[tmppos++] = a[rpos++];

for (i = 0; i < numelements; i++, rightend--)

a[rightend] = tmparray[rightend];

} void msort(int a, int tmparray, int left, int right) }

void mergesort(int a, int n)

// 快速排序 

// 遞迴 

void swap(int v, int i, int j)

void quicksort(int v, int n)

swap(v, 0, last);

quicksort(v, last);

quicksort(v + last + 1, n - last - 1); }

// 非遞迴

void swap(int v, int i, int j)

int partition(int a, int low, int high)

void quicksor***(int a, int n)

if (m + 1 < h)

} }

}

選擇排序、快速排序、希爾排序、堆排序不是穩定的排序演算法,而氣泡排序、插入排序、歸

並排序和基數排序是穩定的排序演算法。 

七大排序演算法

七大排序分類 插入排序 直接插入排序 穩定 希爾排序 不穩定 選擇排序 簡單選擇排序 穩定 堆排序 不穩定 交換排序 氣泡排序 穩定 快速排序 不穩定 歸併排序。直接插入排序 時間複雜度 o n 2 演算法穩定性 穩定void straightinsertsort int a,int n 氣泡排序 ...

七大排序演算法

首先回顧下各種排序的主要思路 一 氣泡排序 氣泡排序主要思路是 通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有序。氣泡排序改進1 在某次遍歷中如果沒有資料交換,說明整個陣列已經有序。因此通過設定標誌位來記錄此次遍歷有無資料交換就可以判斷...

七大排序演算法

基本思想設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序 時空複雜度快速排序的最壞時間為o n 2 平均時間複雜度為o nlgn 在初始陣列近乎有序的狀態下最耗時 快...