快速排序
Posted lodger47
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。
方法: 双指针+递归
目的: 达到升序排列
#include <iostream>
#include <stdio.h>
void myPrint(int *p,int len);
void mySort(int *arr,int start,int end);
int main()
{
int arr[]={10,2,44,3,8,1,0,12,11,9};
int len = sizeof(arr)/sizeof(int);
myPrint(arr,len);
mySort(arr,0,len-1);
myPrint(arr,len);
return 0;
}
void myPrint(int *p,int len)
{
for (int i=0;i<len;++i)
{
if(i!=(len-1))
printf("%d--",p[i]);
else
printf("%d",p[i]);
}
printf("\\n");
}
void mySort(int *arr,int start,int end){
// 所传递过来的是数组的起始位置,致终点位置
if(start>=end) // 目的是数组内至少有大于1个的元素
return;
// 保存起始位置和终点位置,和第一个元素位置
int i=start,j=end,x=arr[i];
while(i<j)
{
while(i<j && arr[j]>=x)
j--;
if(i<j)
arr[i] = arr[j];
while(i<j && arr[i]<x)
i++;
if(i<j)
arr[j--] = arr[i];
}
arr[i] = x;
mySort(arr,start,i-1);
mySort(arr,i+1,end);
}
以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章