smile908

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

两种排序算法随想

冒泡排序,可直接运行,有需要可以直接copy带走

冒泡排序算是一种非常经典的排序吗,并不是说他的算法优秀,也不是说他的效率高,他作为最广为人知的一种排序算法,我们可以不用,但是必须要会是吧。

我们在进行一些面试的时候,写排序算法,我们可以不去研究快排,堆排,桶排等效率较高的排序算法,直接开写冒泡排序,真是万事皆可冒泡。

冒泡算法代码如下

public class mpsort {
public static void main(String[] args) {
int arrs[]={22,44,66,6,226,223,4,24,1};
System.out.println("排序前:");
for (int i=0;i<arrs.length;i++){
System.out.print(arrs[i]+" ");
}
sort(arrs);
System.out.println();
System.out.println("排序后:");
for (int i=0;i<arrs.length;i++){
System.out.print(arrs[i]+" ");
}
}
public static void sort(int[] arr){
int length=arr.length;
for (int i=0;i<length-1;i++){
for (int j=0;j<length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}

运行结果为:

 

 

接下来给大家介绍了另外一种排序,只图一乐就可以了,这个算法叫做睡眠排序。什么是睡眠排序呢。大致思路就是说,有多少被比较的数字我们就开

多少的个线程,直接多线程同步运行打印,数字的值就是我们要休眠的时间。这个休眠的时间的单位是毫秒。小的数字休眠的时间短,就能更快的打印出来,这样

我们就实现了一个从小到大的排序。具体代码如下:

public class sleepSort
{
public static void main(String[] args) {
int[] arrs=new int[]{334,33,4,223,467,35,3,22,1};
for (int arr : arrs) {
new Thread(()->{
try {
Thread.sleep(arr);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print(arr+" ");
}).start();
}
}
}
运行结果:

 

 这种算法有利有弊吧,优点是代码结构简单,效率较高,缺点是空间资源开销大,当被比较的数字多了,线程开多了就不适用了,而且数字不能太大,超过1000就需要等待1s了

而且两个数字相差不大容易出错,总的来说,空间换时间罢了,弊大于利,只图一乐。

posted on   smile908  阅读(28)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示