背景:没学过数据结构的毛嘎一日向计算机大神白小兔请教数据结构里面的排序算法,于是他十分认真的把大神传过来的真经记录在这里了。
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)
}
}