C++快速排序代码实现
今天来实现快速排序,看看伟大的快速排序方法怎么实现它。
·首先写个template,type arm排函数,name t white,快速排序quick shot,里面是tr re数组,然后是数量,调用自己的低规的quick shot,three从零开始到number减一。
·先用自己的低规,type name t white,两个下划线quick short,用t ret左臂,右臂写完之后低规先把结束条件写好,left大于等于二就不需要排了,结束就可以了。
·结束之后要获得position,position部分用的是re,然后left和right获取了之后开始低归自己,salt,前面使用的是array,后面使用的是left,再使用的应该是p减一,这符合快速排序的思想。
·然后再弄后半段,sort array,这次应该是p加一了,然后是right。
·接下来写potation,potation返回值pip name t,首先int,int是返回值,起名字叫potation,里边数组tr a,然后是in左臂,in右臂,然后是position,position的部分首先先把第一个v拿进来,v拿进来是左面的部分,等一会好分割它,这是用来分割的,分割应该是从left开始,因为循环是从int,i是从l加一开始,分割位置是从l开始,我从l加一开始循环,所以以l这个部分的数据是不取的。
这样用这分割的时候是分在起点的位置,而第一个元素是部分的,这样就保证了这一所七十位的数组是空的,i小于等于r。
欢迎大家来判断每次要往后挪的那个数,i和v相比进行区分,v应就是re,i每次取的数应该比其实那个位置小的部分才会往前挪,放到前半部分,大的就往后半部分放,所以必须比它要小才会挪,大的部分直接就不需要多了。
如果它比它大,假如现在比它大,比七十一个大,那就往后找就行了,大的数在后面放,只找小的数,所以占用的是小的数。
·然后交换一下array,i和谁?array z加一,这不是从left开始,这加一不处理,这加一开始放,画完之后进行了一次交换,然后往后挪一下,相当于前半部分的速度开始涨了,这样全做完循环之后小的就放在了前面,大的就放在了这位置的后边。
·再把因为其实位置没处理,所以把其实位置再处理一下,其实位置left和这个位置数据交换一下,最后找到了j,返回去找到了不对手的位置,编一下,没问题。
看排序写的有没有问题,先准备个数组,然后打印一下排序前的,再打印一下排序后的,之前都写过来直接拿过来就行,这几个也写过很多字了,拿过来,这是排生成的速度,这是排序前的,这是排序后的中间,用quixot进行排序,看看排序之后速度有没有牌,有没有写的问题,预计一下,这是生成的随机速度,这是二十四六十六十六,十九幺六二七五七,排序成功了。
排序成功就排的十万条看看花多久,还把之前的数据拿过来,之前是这句话,拷贝一份,拷贝一份新的,拷贝贝壳新的不需要打印了,需要算性能了,算性能是用的这个,有个规定的,然后有个快速的,对比一下,快速的和b归b a并的,这儿用的是快速的,规定的看显不显同文件,规定的有同文件了,运营编一下,没问题,一下看看,十条都是零秒,因为十条太少了了,十万条用了零点零零九秒,规定快速的零点零点五五零五九秒,再加个一百万条的,一百万调回种量,超出了值的范围了,哪个地方超出了值的范围?拍的,那就先不管规规定了,看看快速的问题还是规定的问题,看看快速划多久一百万条,四点八五四秒,一百万条只花了四点多秒,这就已经很满足想法。
快速排序写在这,去看看一百万条是哪一处了,