基本介绍:
快速排序(quickSort)是基于冒泡排序的一种改进,该排序算法采用了分治的思想,将待排序数组逐步划分两个部分,其中左半部分都要小于右半部分,再将左右部分分别进行快速排序,整个过程可采用递归进行,直到排成一个有序数列。
整体步骤:
① 选取待排序数组中其中一个数作为基数(建议选取第一个数),使flag等于基数的下标,left等于待排序数组第一个数的下标,right等于待排序数组最后一个数的下标。
② 将数组中比基数小的数放到它的左边,比基数大的数放到它的右边。
③ 将基数左边的数组作为待排序数组,重复①步骤。
④ 将基数右边的数组作为待排序数组,重复①步骤。
⑤ 直到left >= right,代表数组已经划分为最小单位(待排序数组长度小于等于1),即该部分排序完毕,无需继续分割数组。
详细过程:
括号内为待排序数组
① 待排序数组num:{ 9,17,0,6,10,5 } 其中基数为 9 ,即flag = 0,left = 0,right = 5;
定义i = left,j = right,先使 j 不断左移直到num[j]<num[flag],交换这两个数,并使flag = j;
此时 num:{ 5,17,0,6,10,9 };
再使 i 不断右移直到num[i]>num[flag],交换这两个数 ,并使flag = i;
此时 num:{ 5,9,0,6,10,17 };
不断重复以上步骤,直到i==j时。
此时 num&