数组排序方法

1.最便捷的方法

Arrays是用来操作数组的工具类,Arrays中有多方法可以调用,可以查看API文档看具体细节。

int[] a={23,4,564,2,76,45};
Arrays.sort(a);

2.冒泡排序法----许多人都知道的方法

理解思路(本人思路):

1)把最大数放在最后面,如果有n个数,则需要进行n-1次比较,要用到第一个for循环,

int[] a={23,4345,676,53,1,9};
for(int i=0;i<a.length-1;i++)

2)每次比较过程中,要把大数与小数调换位置,

第一次比较   交换n-1次 i=0

第二次比较   交换n-2次 i=1

所以要进行n-1-i次交换

for(int j=0;j<a.length-1-i;j++)

完整代码如下:

 1 package com.briup.ch01;        
  2 import java.util.*;            
  3 public class Test1{            
  4     public static void main(String[] args){
  5         int[] a={23,4,45,6,4,3,7};         
  6         for(int i=0;i<a.length-1;i++){     
  7             for(int j=0;j<a.length-1-i;j++){
  8                 if(a[j]>a[j+1]){
  9                 a[j]=a[j+1]+a[j];
 10                 a[j+1]=a[j]-a[j+1];
 11                 a[j]=a[j]-a[j+1];                                           
 12                 }              
 13             }                  
 14         }                      
 15         System.out.println(Arrays.toString(a));
 16                                
 17     }                          
 18                                
 19 }       

3.选择排序--研究了好久的方法

理解思路:

1)把最小数放在最前面,如果有n个数,则需要进行n-1次比较,要用到第一个for循环,

int[] a={23,4345,676,53,1,9};
for(int i=0;i<a.length-1;i++)

2)每一次比较过程中,都要从i开始以后的数中,选出最小值的下标(此处需要注意,是数组下标,而不是具体的值);然后利用最小数的下标与第i次比较中第一个数值(第i个数值)进行交换。

for(int j=i;j<a.length;j++)

完整代码如下:

 1 package com.briup.ch01;
  2 import java.util.*;   
  3 public class Test2{   
  4     public static void main(String[] args){
  5         int[] a={43,5,2,67,7,8};
  6         for(int i=0;i<a.length-1;i++){
  7             int tem=i;
  8             for(int j=i;j<a.length;j++){
  9                 if(a[j]<a[tem]){
 10                     tem=j;
 11                 }     
 12             }         
 13             int temp1=0;
 14             temp1=a[tem];
 15             a[tem]=a[i];
 16             a[i]=temp1;                                                     
 17        }              
 18         System.out.println(Arrays.toString(a));
 19     }                 
 20 }     

4.插入排序--理解不是特别清楚

附上代码:

 1 package com.briup.ch01;       
  2 import java.util.*;           
  3 public class Test2{           
  4     public static void main(String[] args){
  5         int[] a={43,5,2,67,7,8};
  6         for(int i=1;i<a.length;i++){                                        
  7            for(int j=i;j>0;j--){
  8             if(a[j]<a[j-1]){  
  9                 int tmp=a[j-1];
 10                 a[j-1]=a[j];  
 11                 a[j]=tmp;     
 12             }                 
 13            }                  
 14        }                      
 15         System.out.println(Arrays.toString(a));
 16     }                         
 17 }     

理解思路:类似于打牌,手里拿到一张牌,再次抓牌的时候与已经有的牌从后向前进行比较,如果比较前一个小,则交换位置。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值