目录
故事的开始
无聊的一个下午 和朋友说有点无聊 他和我说
确实之前好像没有接触过 挺感兴趣 就去研究了一下
猴子排序
引用一下百度百科——无限猴子理论
简单地说就是随便乱排 展示一下代码(这里我是用java代码实现的)
public static void bogoSort(int[] iArray){
Random r = new Random();
int num = 0;
while(true) {
System.out.println("正在执行第"+(++num)+"次排序");
System.out.println("排序之前:"+ Arrays.toString(iArray));
for (int i = 0; i < iArray.length; i++) {
swap(iArray, i, r.nextInt(iArray.length));
}
if(isSorted(iArray)){
System.out.println("排序成功");
System.out.println("排序之后:"+ Arrays.toString(iArray));
return;
}
}
}
判断是否成功的代码:
public static boolean isSorted(int[] iArrays) {
for (int i = 0; i < iArrays.length - 1; i++) {
if(iArrays[i]>iArrays[i+1]){
return false;
}
}
return true;
}
交换和随机生成逻辑代码:
//初始换一个长度为参数的随机数组,数组元素为0(含)到50(不含)的随机数
public static int[] initArray(int length){
Random r = new Random();//申明并实例化一个Random对象
int[] iArray = new int[length];//申明并实例化一个int数组用于测试排序
for (int i = 0; i < iArray.length; i++) {
//通过Random随机生成一个0(含)到50(不含)的数并插入对应位置
iArray[i] = r.nextInt(50);
}
return iArray;
}
//交换
public static void swap(int[] iArray,int i,int j){
int tmp = iArray[i];
iArray[i] = iArray[j];
iArray[j] = tmp;
}
最后主方法入口:
public static void main(String[] args) {
int[] iArrays = initArray(10);
long start = System.currentTimeMillis(); //获取开始时间
bogoSort(iArrays);
long end = System.currentTimeMillis();
//获取结束时间
System.out.println("运行时间:" + (end - start) / 1000 + "s");
}
效果
还有睡眠排序 面条排序 感兴趣的大家可以研究一下
睡眠排序
面条排序