首页 > 编程语言 > 详细

快速排序

时间:2021-06-04 01:28:22      阅读:34      评论:0      收藏:0      [点我收藏+]

方法: 双指针+递归
目的: 达到升序排列

#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);
}  

快速排序

原文:https://www.cnblogs.com/lodger47/p/14847687.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!