氣泡排序,快速排序,堆排序,歸併排序

2021-08-20 12:42:23 字數 1096 閱讀 1417

1.氣泡排序

(1)基本思想:從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(最小)的資料元素交換到了無序序列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有資料元素都排好序。演算法的核心在於:每次通過兩兩比較交換位置。選出剩餘無序序列裡最大(最小)的資料元素放到隊尾。

(2)c++實現**:

#includevoid bubble_sort(int arr,int len)

}}

(3)時間複雜度:o(n^

2)      空間複雜度:o

(1)2.快速排序:快速排序是十分常用的高效率演算法

(1)基本思想:先選乙個『標尺』,用它把整個佇列過一遍篩子,以保證,其左邊的元素都不大於他,其右邊的元素都不小與他。

這樣,排序問題就被分割為兩個子區間,再分別對子區間排序就可以了。

(2)c++實現**:

#include#include#include#include#includeusing namespace std;

int partitions(int a,int beg,int en)

}//堆調整

void adjust(int arr,int r,int len)

else

break;

}arr[r]=temp;

}//交換

void swp(int arr,int i,int j)

//堆排序

void sort_h(int arr,int len)

}

(4)時間複雜度o(nlogn)

4.歸併排序

(1)**實現:

#include#include#include#include#includeusing namespace std;

void merge1(int a,int p,int q,int r){

int i,j,k;

int n1=q-p+1;

int n2=r-q;

int l[n1];

int rr[n2];

for(i=0;i(2)時間複雜度:o(nlogn)

快速排序 堆排序 歸併排序

快速排序 includeusing namespace std int a 8 int sz sizeof a sizeof int int partition int a,int p,int r int main const int sz sizeof a sizeof int 堆化 保持最大堆的...

快速排序,歸併排序,堆排序

l r 1在奇數長度陣列的中間,偶數長度陣列的左半邊最後乙個,極限情況下陣列只有兩個數,i遇到第乙個數就會停下,此時模擬i,j下標的數有無交換的情況,會發現j在停下來時都位於第乙個數的位置,因此用j,j 1才不會越界 l r 1 1在奇數長度陣列的中間往右第乙個,偶數長度陣列的右半邊第乙個,極限情況...

各種排序,歸併排序,快速排序,堆排序

快速排序 選中乙個元素,將比該元素小的元素放在其左側,比該元素大的放在其右側,然後將該元素放在正確的位置。然後對左側和右側的所有元素依次進行以上操作。以首元素作為比較元素c 初始化i為0,j為len 1 找到右邊第乙個比c小的數字a j 放在i位置 找到左邊第乙個比c大的數字a i 放在j位置 重複...