深度剖析快速排序中的递归

本文是一篇读书笔记,主要对快速排序的过程进行讲解,还详细剖析了递归函数。文中给出了相关源码,包括main.cpp、sort.h、sort.cpp ,并以5个数据为例解释 quick 函数,更多数据以此类推。

深度剖析快速排序中的递归:

本篇文章为笔者的读书笔记,未经允许请勿转载。如果对你有帮助记得点个赞(●’◡’●)
本文主要对快排的过程讲解和对递归函数的过程化详细剖析。
源码如下

main.cpp

// 1排序.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
void random(vector<int>& vec)//随机数生成器
{
   
   
	random_device r;
	for (auto& e : vec)
	{
   
   
		e = r() % vec.size() + 1;
	}
}

void out(const vector<int>& vec)//输出函数
{
   
   
	for (const auto& e : vec)
	{
   
   
		cout << e << " ";
	}
	cout << endl;
}

void sortTest(function<void(vector<int>&)> sortFn)//测试函数
{
   
   
	vector<int> vec(1000);//生成1000个乱序数据存在vec中
	random(vec);
	out(vec);
	auto start = clock();//测试时间
	sortFn(vec);
	auto end = clock();
	out(vec);
	auto diff = (float)(end - start) / 1000;
	cout << diff << endl;
}

int _tmain(int argc, _TCHAR* argv[])//主函数,采用了预编译头(个人习惯)
{
   
   
	sortTest(sort::mergeSort);
	system("pause");
	return 0;
}
//测试结果
689 345 538 69 85 347 979 909 876 241 148 507 1 606 136 148 560 959 992 944 736 653 398 548 995 919 748 664 669 190 329 968 660 193 947 795 532 814 901 799 184 718 860 394 115 971 250 890 277 765 390 504 172 687 858 750 423 568 29 450 347 94 187 721 861 201 997 725 38 835 618 988 314 257 642 534 225 612 41 597 566 577 535 584 834 933 907 345 243 814 323 106 612 334 137 64 416 269 897 682 611 212 918 352 767 295 412 50 803 773 624 833 774 708 111 746 749 594 219 273 636 119 415 753 44 695 956 162 764 586 871 367 869 254 535 364 121 146 576 504 576 67 537 308 197 604 850 839 471 874 560 287 231 138 477 690 93 835 488 660 845 965 794 980 560 94 819 787 742 388 177 47 437 556 646 379 591 112 11 927 327 229 575 740 716 402 211 754 877 515 341 56 539 272 414 273 539 726 59 256 903 611 332 541 413 160 106 655 222 275 672 402 861 252 713 736 100 538 65 268 203 721 239 715 906 160 179 349 192 678 403 166 122 869 541 216 534 423 189 182 813 458 497 420 129 101 127 919 255 126 505 651 992 145 300 515 962 789 983 630 20 497 765 835 717 981 161 41 822 594 929 541 455 875 417 596 204 499 654 344 972 130 962 593 139 207 824 357 767 310 990 244 303 740 578 136 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值