/*
快速排序第一次弄懂
由學姐講的我個人覺得不錯的一種理解方法:挖坑填空
舉例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處產生新的乙個坑,...