快速排序

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

以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段

如何使用sublime代码片段快速输入PHP头部版本声明

代码片段如何使用CSS来快速定义多彩光标

vs2003:快速片段工具