用户:
Lonely_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、由左往右搜索到的数字与最左调换,形成一轮喵(范围由临界点决定)
以上可能有些地方不够严谨,望原谅~
总结:适用于萌新——像我这种,有着一定的思维锻炼,大佬的话就没啥用了。