标签:
// 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