排序(1)

本文通过一个10位数组实例,详细解析了冒泡排序算法的工作原理及其实现过程,并提供了具体的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

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

    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值