對比快速排序,理解歸併排序

2021-08-08 14:56:45 字數 782 閱讀 9829

對比快速排序來理解歸併排序。

有時經常講歸併排序和快速排序記混亂,因為兩者都用到了分治法。其實兩者的不同之處非常明顯。

快速排序:「先治後分」,

void quickly_sort(int arr, int low, int high) 

}

歸併排序:「先分後治」。

void merge_sort_up2down(int a, int start, int end)

「分」的過程用遞迴實現起來分簡單,主要是理解兩者的「治」。

快速排序的根本處理是:如何在選定乙個元素後,將這個元素放在合適的位置,使得元素左邊都是小於這個元素的,右邊都是大於這個元素的(挖坑填坑法)

int _qucikly_sort(int arr, int low, int high) 

while(i <= mid)

tmp[k++] = a[i++];

while(j <= end)

tmp[k++] = a[j++];

// 將排序後的元素,全部都整合到陣列a中。

for (i = 0; i < k; i++)

a[start + i] = tmp[i];

free(tmp);

}

這樣,都過簡單的**對比,就可以很簡單的分清楚兩者的關係與不同。

快速排序 歸併排序

感覺好久之前不寫這些基礎的東西忽然覺著,想複習一下,就簡單溫習一下排序的例子 package com.ruishenh.algoritmic public class sort static void printmsg int arrs system.out.println static int g...

快速排序,歸併排序

快速排序 quicksort 是對 氣泡排序的一種改進。設要排序的 陣列是a 0 a n 1 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。需要注意的是,多個相同的值的相對位置也許會在演算法結束時產...

歸併排序,快速排序

快速排序實現 filename fastsort description author hcq createtime 2019 04 12 10 01 public class fastsort arrays.stream arr foreach v system.out.println 排序後 s...