DSA-interview-快速排序笔记

Posted fish in the sea

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DSA-interview-快速排序笔记相关的知识,希望对你有一定的参考价值。

http://blog.csdn.net/morewindows/article/details/6684558#

默写:(错误用黄色标出)

int partition(int s[], int left, int right)
{
	int i = left;
	int j = right;
	int x = s[0];--------应该为s[left]----不一定是非从零开始啊。
	while (i < j)---------------因为i=j的时候就是结束这个小过程的时候。所以在i=j的那一刻停止就可以了
	{
		while (i <= j&&s[j] < x)-----------while(i<j&&s[j]>=x)【两个while中需要有一个=x的】
			j--;
		s[i] = s[j];-----------------------if(i<j)------因为出while的时候可能i=j了,这里保证在不等的时候填坑,并移动
                               {s[i]=s[j];
                                i++;} while (i <= j&&s[i] > x)-----------同理,s[i]<x; i++; s[j] = s[i]; } s[i] = x; return x;--------------------------返回的是坑,而不是坑里的东西 return i } void quick_sort(int s[], int left,int right) { if (s == NULL||left>=right)------这里关于空的检查。。。很奇怪----这是个问题待解决 return; int g = partition(s, left, right); quick_sort(s, left, g - 1);--------------------递归 quick_sort(s, left + 1, right); }

  整合成一个函数的时候

注意:

①将返回值设为void

②在最开始检查left和right的大小----如果不检查会造成堆栈溢出----原因是最后递归是要g-1和g+1的,如果不检查会超出范围。

 

以上是关于DSA-interview-快速排序笔记的主要内容,如果未能解决你的问题,请参考以下文章

《算法》笔记 5 - 快速排序

冒泡排序,插入排序,归并排序,快速排序的学习笔记

快速排序-递归实现

算法笔记_015:快速排序(Java)

算法笔记 7 归并排序和快速排序

快速排序学习笔记