選擇排序及其改進 堆排序

2021-10-19 04:17:59 字數 909 閱讀 4905

#include #include "iomanip"

using namespace std;

/*選擇排序思想:

每一趟(如第i趟)從後面n-i+1個待排序的元素中選出關鍵字最小的元素,

作為有序子串行(前i-1個有序)的第i個元素,直至n-1趟結束。

因為最後乙個元素是不用再排序的(沒有比它再小的元素了,他是最後乙個)

*/void selectsort(int a , int n)

}swap(a[min],a[i]);

}}/*

選擇排序改進的演算法思想:

在選擇排序每趟選取最大元素的過程中,判斷接下來的元素是否有序。

倘若有序則停止。否則,繼續。

該演算法和先前的選擇排序演算法差別在於:時間複雜度與初始序列有關。

*/int _max(int a , int n , int &m)

}return pos;

}void selectsortmodify(int a , int n)}/*

堆排序思想:

1、建堆 2、進行堆排序輸出。而這兩個部分都要借助堆的調整(因為每次輸出元素會影響樹)

*/void headadjust(int a , int k , int n)

}a[k] = a[0];//找到最初k的最終位置。

}void buildheap(int a , int n)//對下標1-(n-1)個元素進行構建堆

}void heapsort(int a, int n)

}int main()

; selectsortmodify(a , 10);

for(int i = 0 ; i < 10 ; i++)

printf("%d ",a[i]);

}

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

寫在前面 上傳github交換排序選擇排序 堆排序 選擇排序 顧名思義,我們就可以猜到,它是原則合適的元素放到合適的位置 從圖中,我們可以得到 1.用第乙個元素,和其他所有的元素進行比較,找出最小的,然後進行交換 2.然後進行,資料的遞增 3.直到資料全部有序 void selectsort int...

選擇排序 堆排序

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法 比如序列 5,5,3 第一次就將第乙個 5 與 3 交換,導致第乙個5挪動到第二個...

選擇排序 堆排序

堆排序 堆排序分為兩個過程 1 將原來無序的數列,轉化成堆序列 建初識堆的過程 2 輸出堆頂元素並調整建新堆的過程 資料結構偽 typeof sqlist heaptype void heapadjuisti heaptype h,int s int m for i h.length i 1 i c...