快速排序

快速排序C/C++代码实现(待完善)

#include<iostream>
#include<stdio.h>
using namespace std;

void myswap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}

void quickSort(int arr[] ,int start, int end)
{
int key, mid;

int tempStart = start,
tempEnd = end;

//对于这种递归的函数,内部必须要有一个函数返回的条件
if(tempStart >= tempEnd)
return;

//拷贝一个基准值作为后面比较的参数
key = arr[start];
while(start < end)
{
while(start < end && arr[end] > key)
end--;
if(start < end)
{
myswap(&arr[start], &arr[end]);
start++;
}

while(start < end && arr[start] < key)
start++;
if(start < end)
{
myswap(&arr[start], &arr[end]);
end--;
}
}
arr[start] = key;

//分治方法进行递归
quickSort(arr,tempStart,start-1);
quickSort(arr,start+1,tempEnd);
}

int main()
{
//int myArr[] = {12,13,15,20,0,-1,-10,100};
int myArr[] = {23,46,0,8,11,18};

int arrLength = sizeof(myArr)/sizeof(myArr[0]);
quickSort(myArr,0,arrLength-1);

for(int i = 0; i<arrLength; i++)
printf("%5d",myArr[i]);
return 0;
}

posted @ 2020-09-23 23:17  初学者1995  阅读(81)  评论(0)    收藏  举报