Java数组排序算法,冒泡,选择,插入,快速排序

1.冒泡排序

冒泡排序广泛用于数组排序,大致原理就是从第一个数开始,通过和后面一个数相比较,将较大的往后挪,一一比较之后,将最大的放到最下面。第一次比较完毕将最大的数字放到最后面,第二次比较结束以后将第二大的数字放到最后面,依次进行。

其中,第5行之所以要减去i,是因为每放一个最大的数字到最下面,他们就不用再比较了,这样做只是为了提高效率。

 public class BubbleSort{
      int temp;
      public void sort(int[] values){
           for(int i=0;i<values.length;i++){
                 for(int j=0;j<values.length-1-i;j++){
                       if(values[j]>values[j+1]){
                              temp=values[j];
                              values[j]=values[j+1];
                              values[j+1]=temp;
                       }      
                 }      
           }
     }
 }
2.选择排序
先找到整个数组里面的最小值,将其和数组的第一个数值进行交换。然后在除了第一个数值之外的剩下的数组里面进行搜索,找到最小的数值,将其和整个数组的第二个数值交换。依次进行,直到最后一个数值。

public class SelectionSort{
       public void sort(int[] values){
             for(int i=0;i<values.length;i++){
                    int minValueIndex = i;
                    for(int j=i+1;j<values.length;j++){
                           if(values[j]<values[minValueIndex]){
                               minValueIndex = j;  
                           }  
                    }
                   //交换数值
                   int temp = values[i];
                   values[i] = values[minValueIndex];
                   values[minValueIndex]=temp;                     
            }
      }        
 }


第3行的i是代表数组中的第i个数(i从0开始),每一轮要做的就是将除了第0到i-1之外的其它数进行比较(i=0时例外,全部都要进行比较),将最小的数值和第i个数值进行交换。第4行的意思是,比较刚开始的时候,先假设第i个数是最小的,将其索引记下来。一旦比较的过程中发现比它小的,就将索引换成那个数值的,依次比较下来。

3.插入排序
顾名思义,假设第0个元素已经在正确的位置上,从第1个元素开始,依次和左边已经排好的序列进行比较,将值插入到左边合适的位置上。

public class InsertionSort{
     public void sort(int[] values){
        for(int i=1;i<values.length;i++){
           for(int j=i;j>0;j--){
              if(values[j]<values[j-1]){
                 //交换
                 int temp = values[j];
                 values[j] = values[j-1];
                 values[j-1] = values[j];
              }
           }
        }
     }
}

4.数组自带的静态方法

这个方法是Arrays.sort(int[ ] values);

直接使用就可以了。怎么说呢?选择排序算法最主要考虑的就是效率,数组自带的这个排序方法叫做快速排序方法。看名字就知道效率最高,所以说默认情况下,就直接使用这个就行了。

说到这里,假如你想要进行反向排序的话,那么也可以使用数组自带的方法 Arrays.sort(int[ ] values, Collections.reverseOrder());

这样的话,比如你要用到比分之类的,就可以反向来排,分数越大越要排在前面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值