Java冒泡和选择排序法(有手就能学会)

Java排序常用的排序方法

相信很多小伙伴刚刚开始学习java这门语言的时候,都感觉各种各样的排序,对我们的小伙伴太不好友好了,看看这几种方法,你绝对能把它们按在地上摩擦,下面我将为大家说几种比较常见的方法,第一个方法只要有手就能学会话不多说,看操作。
第一种:直接调用java内置方法:Arrays.sort(需要排序的数组);升序排序

importjava.util.Arrays;
public class Px1 {
    
    
   public static void main(String[] args) {
    
    
     int []arr= {
    
    25,37,29,65};
//   注意:一定要导入这个才行:import java.util.Arrays;
    	 Arrays.sort(arr);//调用方法便可以实现从小到大进行排序
	System.out.println(Arrays.toString(arr));
   }
}
//运行结果:[25,29, 37, 65]

第二种:选择排序法:
实现原理:就是利用双层循环,从arr[0]开始选一个数字出来与其他的数字比较,一轮下来,就出现了一个最大值或者最小值,然后把这个位置放到数组下标的第一个位置,然后第二次继续从arr[1]中选一个数字和剩下的数字做比较,直到排序完成。

public class Px2 {
    
    
 public static void main(String[] args) {
    
    
//      创建一个数组
        int[] arr = new int[] {
    
     12, 15, 26, 36, 10, 56, 26 };
        Sort(arr); //调用排序这个方法
        //输出排序完之后的结果
            System.out.print("排序后的结果:"+Arrays.toString(arr));
 }
    public static void Sort(int[] arr) {
    
    
    int temp,n=0;//定义一个变量用于交换两个数的值,当然也可以不用定义这个变量,用其他的交换方式也可以
      for (int i = 0; i < arr.length; i++) {
    
    
        for (int j= i+1; j < arr.length-1; j++) {
    
    
             if(arr[i]<arr[j]) //改变这里的大于小于符号可以改变数组的从大到小,或从小到大的排序方式
           {
    
    
              temp=arr[i];
              arr[i]=arr[j];
              arr[j]=temp;
           }
        }     
     }
   }
    /*
   第一次:将arr[0]这个值,也就是12,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 12, 15, 26, 10, 36, 26]

  第二次:将arr[1]这个值,也就是15,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 12, 15, 10, 26, 26]

  第三次:将arr[2]这个值,也就是26,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 26, 12, 10, 15, 26]

  第四次:将arr[3]这个值,也就是36,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 26, 26, 10, 12, 15]

  第五次:将arr[4]这个值,也就是10,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 26, 26, 15, 10, 12]

  第六次:将arr[5]这个值,也就是56,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[56, 36, 26, 26, 15, 12, 10]

 第七次:将arr[6]这个值,也就是26,和 12, 15, 26, 36, 10, 56, 26这串数字做比较,得出的排序结果为:[[56, 36, 26, 26, 15, 12, 10]

 这里经过七次的比较得出了最后的排序结果:[56, 36, 26, 15, 12, 10, 26],相信大家也看出来了,这样的排序
 会有多余的计算,会降低计算机的计算效率,但是为了大家能更清楚的明白选择排序法的原理,我就先这样做了,
 大家明白了这个原理,大家可以对这个排序进行改进, 去掉多余的计算次数,提高代码的运行效率。

   */
}

效果图片:
在这里插入图片描述
第三种:冒泡排序
原理:所谓的冒泡排序法,就是相邻的两个数字进行比较,如果谁大或者小,就交换位置和相邻的下一个元素比较,第一趟比较完,就把最大或最小值放到末尾去了,接下来在第二趟,直到比较完,排序也就完成。

这里是第一趟:其余的我就不写了大家慢慢自己去推,便于大家自己理解

需要从小到大排序的数据:15,12,25,13

第一次:12,15,25,13

第二次:12,15,25,13

第三次:12,15,13,25

经过三次相邻的比较,就把最大的一个值放到了最后一个位置,直到将这个数据排序完成

public class Px3 {
    
    
    public static void main(String[] args) {
    
    
//       创建一个数组
          
int[] arr = new int[] {
    
     12, 15, 26, 36, 10, 56, 26 };
        Sort(arr); //调用排序这个方法         
//输出排序完之后的结果
              System.out.print("排序后的结果:"+Arrays.toString(arr));
    }
       public static void Sort(int[] arr) {
    
    

       int temp,n=0;//定义一个变量用于交换两个数的值,当然也可以不用定义这个变量,用其他的交换方式也可以

         for (int i = 0; i < arr.length; i++) {
    
    
          for (int j= 0; j < arr.length-1; j++) {
    
    
               if(arr[j]<arr[j+1]) //改变这里的大于小于符号可以改变他的从大到小,或从小到大
             {
    
    
                temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;           
	}         
} 
         System.out.println("第"+i+"次排序结果:"+Arrays.toString(arr));
        }
      }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46188681/article/details/106015402
今日推荐