码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2016-02-23 13:00:20      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

// 2016_2_23_quickSort.cpp : Defines the entry point for the console application.
//快排的精髓就是二分法,只要把第一个搞定,其他的都容易了
#include "stdafx.h"
void QuickSort(int arr[],int left,int right);
int main(int argc, char* argv[])
{
printf("Hello World!\n");
	int arr[]={0,9,4,5,3,2,7,6,1,8};
int arrnum=sizeof(arr)/sizeof(arr[0]);
	QuickSort(arr,0,arrnum-1);
	for(int i=0;i<arrnum;i++)
{
printf("%d ",arr[i]);
}
	return 0;
}
void QuickSort(int arr[],int left,int right)
{
int l=left;
int r=right;
int temp;
if(left<right)//如果左小于右,就可以进去了
{
//首先,要有一个临时变量
temp=arr[l];
while(l!=r)//这个是不等于
{
while(r>l && arr[r]>temp)//从右边开始找,找到一个小于temp的
{
r--;
}
if(l<r)//如果找到了,小于temp的,赋值过去
{
arr[l]=arr[r];//替换了
l++;//左边的加一
}
while(l<r && arr[l]<temp)//从左边开始找,找到一个大于temp的
{
l++;
}
if(l<r)//找到了,并且左边的索引小于右边的
{
arr[r]=arr[l];//替换
r++;
}
}
arr[l]=temp;//把临时变量赋值过去

//下面是左右两个递归
QuickSort(arr,left,l-1);
QuickSort(arr,l+1,right);
}
}
 

快速排序

标签:

原文地址:http://www.cnblogs.com/Study02/p/5209445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!