快速排序
1. 时间复杂度 O(N*LogN)
2.个人认为快速排序是不断的分治、递归的进行它排序操作过程,直到排序完成
3. 进行一次排序操作后,把指定的一个数,放到该序列应该在的位置,这个数的左边都比这个数小,这个数的右边都比这个数大。
以3 ,7 ,8 ,4 ,2 ,1 ,9 ,5 为例进行排序演示
当进行一次排序操作后字符串变化如下:
1.准备:需要有一个变量存储指定的数,这里用 temp ,用front和end变量记录序列位置;初始是指向首尾;
2. end指向位置向左移动的找比 temp 小的数,如果小,将end指向的数赋给front向的数
3. front指向位置向右移动的找比 temp 大的数,如果小,将front指向的数赋给end向的数
4. end左移,发现 2 小于 temp的值,将 2 赋值给front所指的位置。 然后front 右移
5.Front指向的数大于temp的值 3 ,将8赋给end所指的数。然后end向左移动
6.end左移,发现 2 小于 temp的值,将 2 赋值给front所指的位置。 然后front 右移
7.Front指向的数大于temp的值 3 ,将8赋给end所指的数。然后end向左移动
8.当 front和end指向的数重合,将temp的值 赋给,它们指向的数
9. 至此,一趟排序操作完成,接下来以 3 为基准进行二分,左边和右边继续进行此操作 ,直到排序完成
如发现错误请指正!
转载请注明出处!