03_java数组和冒泡排序

来源:互联网 发布:免费网络拍卖平台 编辑:程序博客网 时间:2024/06/03 18:22

一、数组排序

关于数组排序,常见的有两种,一是选择排序,二是冒泡排序,下面分别来介绍这两种排序方法。

A,选择排序

画个图来便于理解

 

 

首先我们定义一个数组,int[] arr = new int[]{43,23,74,4,27},首先,我们把数组中的第一个元素依次的与其他元素进行比较,定义中的数组第一个元素是43,第二个是23,如果第一个元素大于第二个元素,则交换他们的位置,此时4323交换位置,然后再拿第一个元素与第三个元素之间进行比较,同理,如果第一个元素大于第三个元素,则交换他们的位置,不断的如此进行比较,知道与最后一个元素进行比较,此时我们得到的第一个元素即为数组中的最小值。

接着,我们把数组中第二个元素依次与数组中其他元素进行比较,直到比较完,数组中最后一个元素,此时我们得到数组中第二小的元素。

如上,我们把第三个元素依次与数组中元素进行比较.........直到最后一次比较为止。

总结规律:

        外层循环:控制轮数 从0开始到length-1结束

 内层循环:控制一轮中比较的次数 从轮数+1开始到length轮数结束

 

[java] view plaincopy
  1. package cn.itcast2;  
  2. /* 
  3.  * 选择排序: 
  4.  *  使用每一个元素,与其他元素依次比较 
  5.  * 外层循环:控制轮数 
  6.  *    从0开始到length-1结束 
  7.  * 内层循环:控制一轮中比较的次数 
  8.  *           从轮数+1开始到length轮数结束 
  9.  */  
  10. public class Demo02_Select {  
  11.    
  12. public static void main(String[] args) {  
  13.    
  14. int[] arr = new int[]{43,23,74,4,27};  
  15. for(int i=0; i<arr.length-1; i++) {  
  16. for(int j=i+1; j<arr.length; j++) {  
  17. if(arr[i]>arr[j]){  
  18. int temp = arr[i];  
  19. arr[i] = arr[j];  
  20. arr[j] = temp;  
  21. }  
  22. }  
  23. }  
  24. //遍历数组  
  25. for (int i = 0; i < arr.length; i++) {  
  26. int j = arr[i];  
  27. System.out.print(j+" ");  
  28. }  
  29. }  
  30. }  

 

 

 

 

B,冒泡排序

同样作图理解

 

同样的数组,冒泡排序主要是让相邻的两个元素之间进行比较,此时,比较第一个元素和第二个元素进行比较,如果第一个元素大于第二个元素,则交换他们的位置,接着将第二个元素与第三个元素之间进行比较,如果第二个元素大于第三个元素,则交换他们的位置,以此类推,知道最后两个元素比较完成,此时我们发现最大值已经排列完成。

接着依旧,相邻两个元素进行比较排序,此时我们比第一次少比较了一次,并且获取了,第二大的值。

如上方法,依次进行,知道最后一次前两个元素进行比较排序。

 

总结规律:

 外层循环:控制轮数  从0开始到length-1结束

 内层循环:控制一轮中比较的次数  从0开始到length-1-轮数结束

 

代码如下:

[java] view plaincopy
  1. <pre name="code" class="java">package cn.itcast2;  
  2. /* 
  3.  * 冒泡排序: 
  4.  *      使用相邻的两个元素依次比较 
  5.  * 外层循环:控制轮数 
  6.  *    从0开始到length-1结束 
  7.  * 内层循环:控制一轮中比较的次数 
  8.  *           从0开始到length-1-轮数结束 
  9.  */  
  10. public class Demo01_Bubble {  
  11.   
  12.     public static void main(String[] args) {  
  13.           
  14.         int[] arr = new int[]{43,23,74,4,27};  
  15.           
  16.         for(int i=0;i<arr.length-1; i++) {  
  17.             for(int j=0;j<arr.length-1-i;j++) {  
  18.                 if(arr[j]>arr[j+1]) {  
  19.                     int temp = arr[j];  
  20.                     arr[j] = arr[j+1];  
  21.                     arr[j+1] = temp;  
  22.                 }     
  23.             }  
  24.         }  
  25.           
  26.         for (int i = 0; i < arr.length; i++) {  
  27.             System.out.print(arr[i]+" ");  
  28.         }  
  29.     }  
  30. }  



***********

对于排序,实际开发过程中直接使用的是Arrays.sort(arr)。记得第一次直接使用的时候报错了,系统提示错误,找不到符号,后来发现是忘记导包import java.util.Arrays;

0 0
原创粉丝点击