快速排序(挖坑理解)

2021-09-13 10:44:04 字數 916 閱讀 2196

/*

快速排序第一次弄懂

由學姐講的我個人覺得不錯的一種理解方法:挖坑填空

舉例6,3,2,8,9,5,4,7,1,10

給予變數l r代表所排範圍

開始第一步選出乙個標誌量key用來作為標誌量(為方便取key=a[l])

然後挖坑(用0代替挖坑)變為0,3,2,8,9,5,4,7,1,10

1.然後從r出發找到第乙個小於key的值,然後填坑變為1,3,2,8,9,5,4,7,0,10(因為是讓key=a[l],所以只能先找小值)

2.然後從l出發找到第乙個大於key的值,然後填坑變為1,3,2,0,9,5,4,7,8,10(因為是讓key=a[l],所以只能先找小值)

直到i j相遇停止(這樣之後就可以達到key左邊都是小於它的數,右邊都是大於它的數)

這時陣列變為1,3,2,4,5,6,4,8,7,9,10

第一次排好了key的值

然後用上面的方法繼續排沒有排好的即可

mysort(a,i+1,r);

mysort(a,l,i-1);

*/

#includevoid mysort(int a,int l,int r)

a[i]=key;

printf("將%d排好後的a陣列:",key);

for(j=0;j<10;j++)

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

printf("\n");

mysort(a,i+1,r);

mysort(a,l,i-1);

}int main();

mysort(a,0,9);

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

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

printf("\n");

return 0;

}

「挖坑填坑」理解快速排序

快速排序的基本思路 找乙個基準元素,對陣列進行調整,調整的標準是,這個基準元素的左邊存放的都是比這個元素小的,右邊都是比這個元素大的。然後分而治之,對左右兩邊的子陣列利用同樣的規則調整,調整到每乙個子陣列中都只有乙個元素時結束。基本思想很簡單,主要是理解如何在確定基準元素之後,對陣列 子陣列 進行調...

快速排序 挖坑填補法

看了這片文章,確實非常形象,quicksort 找乙個標準值 樞軸 將比標準值小的放到左側,比標準值大的放在它右側,根據標準值位置將當前資料分割成兩部分,兩部分分別重複以上以上操作 includeint sort int arr,int nlow,int nhigh nhigh 從前向後找比標準值大...

挖坑法之 快速排序

速度快,耗時小,面對資料量大的題目時可用快排 選取基準數,不斷 挖坑 填坑 使小於基準數的數全在其左邊,大於其的數全在右邊 最後陣列有序 參考鏈結 選擇最左端的數為基準數x 可將其視為乙個坑,可以將別的數填入這個坑 從右往左尋找小於x的數y,找到後填入坑,此時原基準數的坑被填,而y處產生新的乙個坑,...