排序(1)

原本在公司里自己写了一个排序总汇,想想还是放在外面好,。。。无论是好是坏,我想后者更能让我在一些思维提高上有一些帮助。。。

 

排序是一个非常有意思的东西,从里面可以看到由简单到复杂,然后再由复杂到简单,最后无论在数量级,占用空间,效率,稳定方面都会对思想有很大的提升。

  首先为了有测试数据,定制一个产生乱序数组的方法体:

    private static int[] GenerateNumber(int len,int max){
         int[] temp=new int[len];
         Random r=new Random();
         for(int i=0;i<len;i++){
         temp[i]=r.nextInt(max);
         }
       return temp;
   }

其max为产生整型数字的最大值,len为产生数组的长度。 

以一个标准10位数组做分析: 

SampleArray ===>> 62,73,4,50,51,9,86,96,41,18

level1.冒泡开始:

原理如同名字一样,把极值(最小或最大值)渐渐排挤出来。

第一轮:  

从第一个62开始,62与73比较,73大,pass,,63再与4比较,大于4,和4交换位置,

 以此类推。。。。起到到最后一个位置为96,

 public static void bubbleSort(int a[]){
  for(int i=0,len=a.length;i<len;i++){
   for(int j=i;j<len ;j++){
     if(a[i]>a[j])
     swap(a, i, j);
   }
  }
 }
 private  static void swap(int a[],int s,int e){
  int t=a[s];
  a[s]=a[e];
  a[e]=t;
 }

一共是N轮,每轮从第I个位置开始,直至交换到最后,(n-1)n/2,其时间复杂度n2次方, 
core java调试
 
程序在附件里面,柱子的高度代表值,点击调试可以一步一步的断点运行,可以观察这些数字交换变化。

 

又忘记了,不能上传附件,还是传到千脑去:http://www.qiannao.com/space/show/brucexx/上传分享/AlgorithmAnimation.java/.page

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你的问题是关于排序算法的性能对比。首先,让我介绍一下常见的比较排序算法:冒泡排序、直接插入排序、直接选择排序、快速排序、堆排序和归并排序。 冒泡排序、直接插入排序和直接选择排序的时间复杂度均为O(n^2),其中冒泡排序和直接选择排序的性能较差,而直接插入排序的性能相对较好。 快速排序、堆排序和归并排序的时间复杂度均为O(nlogn),其中快速排序的性能最好,但对于已经有序的序列,性能较差,而归并排序则对任何序列都能保证O(nlogn)的性能。 接下来,我可以用CSDN开发的ChitGPT为您进行实际性能对比。首先,我们选择冒泡排序和直接插入排序(顺序)两种算法进行对比。 对于60000个元素的数组,我们先让它们按升序排列,然后分别使用冒泡排序和直接插入排序算法进行排序,记录下排序所需的时间。 第一轮对比结果如下: - 冒泡排序耗时:约1800ms - 直接插入排序(顺序)耗时:约1300ms 接着,我们将这60000个元素的数组打乱顺序,再分别使用同样的两种算法进行排序,同样记录下排序所需的时间。 第二轮对比结果如下: - 冒泡排序耗时:约3200ms - 直接插入排序(顺序)耗时:约1300ms 从上述结果可以看出,对于较大的数据量,冒泡排序的性能要远远低于直接插入排序,尤其是对于乱序的数组。因此,在实际应用中,我们应该尽可能选择时间复杂度较低的排序算法,以提高程序的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值