C 排序算法

C 排序算法

有种排序叫做猴子排序(Bogo Monkey):

1、检查是否排好

2、打乱

3、检查是否排好

4、打乱

5、……

如果数据稍多的话,几乎是不可能排序好的。

排序代码:

#include

#include

#include

void swap(int* x, int* y){

//交换

int temporary = *x;

*x = *y;

*y = temporary;

}

void randomize(int arr[], int length){

//打乱数组

for(int i = 0; i < length; i++){

srand(time(NULL)+i);//引入i增加随机性

if(rand()%2) swap(&arr[i],&arr[i+1]);

}

//printf("!");//记录打乱次数

}

bool isSorted(int arr[], int length){

for(int i = 0; i < length; i++) if(arr[i]>=arr[i+1]) return false;

return true;

}

void bogoSort(int array[], int length){

while(!isSorted(array,length)) randomize(array,length);

}

Demo:

#include

int main(){

int numbers[] = {20,9,233,0,-23,7,1,666,4,345,63,45,2,45};

bogoSort(numbers,14);//也可以改成更小

for(int i = 0; i < 14; i++) printf("%d,",numbers[i]);

}学神之女 学神之女

dff***j@qq.com

7年前 (2019-02-09)

相关推荐

掌上少儿英语app

掌上少儿英语app

365日博体育备用 09-02
阅读更多
怎么在网上买手机卡

怎么在网上买手机卡

365bet官网体育投注 07-29
阅读更多
大王卡申请需要几天,大王卡申请与激活攻略

大王卡申请需要几天,大王卡申请与激活攻略

bei365官网 07-26
阅读更多