自定义指令 控制跳转 个人收款码 video ftp vue自定义事件 vue双向绑定 android开发项目 sql server 视频教程 jquery去空格 html好看的字体样式 mysql查询结果拼接 python面向对象 java中的多态 java手册 java成员变量 java字符串操作 java文件输入输出 linuxgrep 摩尔斯电码翻译器 摩斯电码翻译器 beatedit 心理学与生活pdf 文章查重软件 脚本学习 windowsjs延时函数 ps去白底 保卫萝卜沙漠7攻略 bin文件编辑器 苹果电脑数据恢复 dns劫持怎么解决 js对象转字符串 ps怎么做动画 汪文君 qupzilla lol皮肤修改器 cf活动一键领取 devtools c语言快速排序 ida下载
当前位置: 首页 > 学习教程  > 编程语言

2020/12/5 快速排序

2020/12/5 10:25:13 文章标签:

这里用到了一个技巧&#xff0c;就是在传入函数参数的时候&#xff0c;在需要排的数据最后放一个最大值&#xff0c;函数里面也让右指针right1&#xff0c;这样会省一些时间&#xff08;函数里的条件left < right一定满足&#xff09; 打印的时候不打印最后一个元素就好 如果…

这里用到了一个技巧,就是在传入函数参数的时候,在需要排的数据最后放一个最大值,函数里面也让右指针=right+1,这样会省一些时间(函数里的条件left < right一定满足)
打印的时候不打印最后一个元素就好

  • 如果没有这个技巧怎么写?
  • 没有这个技巧的时候if (left < right)还能这么写吗,好像还可以,但是left>right是怎么跑出来的
  • 如何看到程序跑的时间
#include <iostream>
using namespace std;
//快速排序
void QuickSort(int a[], int left, int right){

	if (left < right)
	{
		int i = left;
		int j = right+1;
		int pivot = a[left];
		do{
			do i++; while (a[i] < pivot);
			do j--; while (a[j] > pivot);
			if (i < j) swap(a[i], a[j]);
		} while (i<j);
		swap(a[left],a[j]);
		QuickSort(a,left,j-1);
		QuickSort(a,j+1,right);
	}
}

int main()
{
	int k[] = { 1, 4, 2, 3, 5, 8, 6, 7, 9, 0 ,99};
	cout << "before sorting:" << endl;
	for (int i = 0; i <10; ++i)
	{
		cout << k[i] << " ";
	}
	cout << endl;

	QuickSort(k, 0,9);
	cout << "after sorting:" << endl;
	for (int i = 0; i <10; ++i)
	{
		cout << k[i] << " ";
	}
	cout << endl;
	system("pause");
	return 0;
}


本文链接: http://www.dtmao.cc/news_show_450218.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?