選擇排序和堆排序

2021-05-28 10:22:02 字數 1003 閱讀 2387

選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到排序序列末尾。以此類推,直到所有元素均排序完畢。

void selectionsort(int data, int count)

}

堆積排序

(heapsort)是指利用

堆積樹(

堆)這種資料結構所設計的一種排序演算法。

堆積樹是乙個近似

完全二叉樹

的結構,

並同時滿足

堆積屬性

:即子結點的鍵值或索引總是小於(或者大於)它的父節點。

通常堆積樹(heap)是通過一維陣列來實現的。在起始陣列為 0 的情形中:

注意:不使用位置 0,否則左子樹永遠為 0[2]

在堆積樹的資料結構中,堆積樹中的最大值總是位於根節點。堆積樹中定義以下幾種操作:

#include using namespace std;

//最大堆積調整(max_heapify):將堆積樹的末端子結點作調整,使得子結點永遠小於父結點

void max_heap(int array,int i,int length)

}//堆積排序(heapsort):移除位在第乙個資料的根結點,並做最大堆積調整的遞迴運算

void heapsort(int array,int length)

}int main()

; int array=;

int i;

int length=sizeof(array)/sizeof(int); //在這裡 sizeof(array)=80

heapsort(array,length);

for(i=0;icout

}

選擇排序(選擇排序和堆排序)

選擇排序 從序列中依次選出最小值 或者最大值 放在一側。這樣的排序叫選擇排序。這裡我們對選擇排序進行優化,一次就選出當前序列的最大值和最小值。分別放在最右端和最左端。然後left right 使得序列範圍縮小,再進行選擇最大和最小值。void selectsort int a,int n 3選擇排序...

選擇排序 選擇排序和堆排序

選擇排序 基本思想 每一趟 第i趟,i 0,1,n 2 在後面n i個待排序的資料元素集合中選出關鍵碼最小的資料元素,作為有序元素序列的第i個元素。待到第n 2趟做完,待排序元素集合中只剩下1 個元素,排序結束。一 選擇排序 每一次在一組數中選最大的放到最後,然後再在剩餘的數中選次大的數放到倒數第二...

選擇排序 (選擇排序和堆排序)

原理 每一次從無序區間選出最大 或最小 的乙個元素,存放在無序區間的最後 或最前 直到全部待排序的資料元素排完 穩定性 不穩定 1.乙個穩定的排序可以變成不穩定的排序 2.乙個本身就不穩定的是不可能變成穩定的 空間複雜度 o 1 時間複雜度 o o n 2 public static void se...