排序 冒泡,快排,歸併。

2022-08-24 11:39:09 字數 1157 閱讀 7848

1、冒泡:就是每次相鄰的比較,較大的移到後面,一次後就移動最大的到最後面了。

#include void maopao(int *a,int len)	}}

void main()

; int len=sizeof(a)/sizeof(a[0]);

maopao(a,len);

for(int x1=0;x12、 快速排序,用遞迴來理解就是先取待排序列中的一位數(通常選取第一位),將比它小的移到左邊,較大的移到右邊。然後左邊和右邊小的序列進行上面同樣的方法,最終都排完。

下面是冒泡和快速排序的實現(冒泡和上面是重複的):

#include //氣泡排序演算法

void maopao(int *a,int len) }}

//調換陣列裡的2個元素內容

void change(int *c, int a,int b )

void kuaipai(int *a,int left,int right)

; int d2=new int[d.length];

int dsorted=mergesort(d);

system.out.println(arrays.tostring(dsorted));

mergesort2(d,0,d.length-1,d2);

system.out.println(arrays.tostring(d)); }

//第一種歸併易懂,但是浪費空間,每次需要建立較多的額外的空間c和a、b,額外空間複雜度為o(nlogn)

public static int merge(inta,intb)

else

return c; }

//下面是第二中方法,節約了空間,每次合併的內容都儲存在c中,這樣只需要額外的空間c2即o(n)

public static void merge2(int c,int low,int mid,int high,int c2)

else

}while(i<=mid)

while(j<=high)

for(int x=low;x<=high;x++)

c[x]=c2[x];

} public static void mergesort2(intc,int low,int high,int c2)

}}

排序演算法 冒泡 插入 歸併 快排

整理了一下幾種常見的排序演算法,包括冒泡 插入 歸併 快排。還有另外幾種待整理 堆排序 希爾排序 桶排序 直接上 include include include using namespace std void swap int a,int b 最簡單的氣泡排序,時間複雜度o n n void bu...

排序演算法 氣泡排序 快排 歸併排序

氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同...

排序演算法 快排,歸併

從陣列中隨機選乙個數,比這個數大的放右邊,比這個數小的放左邊。快排中的乙個細節 如果乙個數等於p的時候,既可以在左邊又可以在右邊。這麼做是為了避免如果陣列中所有的數都一樣,則會造成資料的不平衡。快排的目的是能夠使得左邊和右邊的數都差不多,這樣的話時間複雜度就不會退化到o n 2 而是o n logn...