背景:沒學過數據結構的毛嘎一日向計算機大神白小兔請教數據結構里面的排序算法,于是他十分認真的把大神傳過來的真經記錄在這里了。
1.快速排序
傳一個參數是low跟high(數組的頭尾坐標)
{
分界點=data[low]; //最終希望分界點數的左邊小右邊大;low就是數組第一個位置,為什么不是0,因為遞歸,在遞歸的第一次,low就是數組的頭部,data[0]
while(low<high)//low>high的時候代表整個數據遍歷完了
{
//在尾部找比分界點小的數,一旦找到,就把這個值與分界點(low對應的值)交換
while(low<high&&r[high]>分界點)
high--;//這個數比分解值大,往前找
//走到這,代表high值比分解點小了,或者數據遍歷完了
swap(low,high)//low是分界點,交換完之后,high就變成分界點
//在頭部找比分界點大的數,一旦找到,這個值與分界點(high對應的值)交換
while(low<high&&r[low]<分界點)
low++;//這個數比分解值小,往后找
//循環走完,代表low上的值比分界點大,或者數據遍歷完了low=high
swap(low,high)//分界點與low對應的值交換,把比分界點大的值放到分界點左邊,此時high就是分界點,交換完之后,low又變成分界點
}
}
-----純代碼
傳一個參數是low跟high(數組的頭尾坐標)
{
分界點=data[low];
while(low<high)//low>high的時候代表整個數據遍歷完了
{
while(low<high&&r[high]>分界點)
high--;
swap(low,high)
while(low<high&&r[low]<分界點)
low++;
swap(low,high)
}
}