猫史档案馆


C++超基础简单算法:快速排序

用户:Lonely_wandererLonely_wanderer查看:17 回复:4 评论:17 创建时间:2021-01-29T17:22:11


 

代码:

#include <iostream>
using namespace std;


int n,a[100]={0};


void cmp(int left, int right){
    int i=left,j=right,temp=a[left];
    if(left>right) return;
    while(i!=j){
        while(a[i]<=temp && i<j) i++;
        while(a[j]>=temp && j>i) j--;
        if(i<j) swap(a[i],a[j]);
    }
    swap(a[left],a[i]);
    cmp(left,i-1);
    cmp(i+1,right);
}


int main(){
    cin >> n;
    for(int i=0 ; i<n ; i++) cin >> a[i];
    cmp(0,n-1);
    for(int i=0 ; i<n ; i++) cout << a[i] << " ";
    return 0;
} 

 

介绍:

喵是一种很基础很简单的算法,主要核心左右一趟一趟地找临界点,最后调整位置实现排序。

 

原理:

1、默认最左边的为基数

2、默认最左边基数往后面搜索,找到第一个小于基数的数字

3、从后面往前搜索,找到第一个大于基数的数字,

4、正常情况下调换大小与基数的数字

5、由左往右搜索到的数字与最左调换,形成一轮喵(范围由临界点决定)

以上可能有些地方不够严谨,望原谅~

 

总结:适用于萌新——像我这种,有着一定的思维锻炼,大佬的话就没啥用了。


回复

上一页1 页 / 共 1下一页
****************

cpp完全看不懂

点赞1


评论


阳光的流熔怪Uyt5阳光的流熔怪Uyt5

加油

点赞0


评论


不阔不阔

牛的

点赞0


评论


­­­­­­­­­­­­­­

哦吼吼

点赞0


评论