zoukankan      html  css  js  c++  java
  • Java基础之:排序

    Java基础之:排序

    排序方式有8种,分别是:冒泡排序,选择排序,插入排序,快速排序,希尔排序,归并排序,基数排序,堆排序。

    这里只写出了冒泡排序,其他排序在之后数据结构的课程笔记中具体写出。

    冒泡排序

    冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就像水底下的气泡一样逐渐向上冒。

    具体案例:

    /**
    	冒泡排序				由简单到复杂,找规律
    		{20,30,25,65,14}
    
    	思路:
    	第一轮排序,依次比较
    		1.{20,30,25,65,14}	20与30比较不用交换
    		2.{20,25,30,65,14}	30与25比较	交换
    		3.{20,25,30,65,14}	30与65比较不用交换
    		4.{20,25,30,14,65}	65与14比较	交换
    
    	第二轮排序,依次比较
    		1.{20,25,30,14,65}	20与25比较不用交换
    		2.{20,25,30,14,65}	25与30比较不用交换
    		3.{20,25,14,30,65}	30与14比较	交换
    
    	第三轮排序,依次比较
    		1.{20,25,14,30,65}	20与25比较不用交换
    		2.{20,14,25,30,65}	25与14比较	交换
    	
    	第四轮排序,依次比较
    		1.{14,20,25,30,65}	20与14比较	交换
    
    	由此可见 一共有5个元素的数组我们经过了4轮比较。且每轮比较次数分别是 4 3 2 1 即 (5 - 轮次)
    */
    import java.util.Scanner;	
    public class BubbleSort
    {
    	public static void main(String[] args){
    		int[] arr = new int[]{20,30,25,65,14};
    		int  temp = 0;
    		
    		//最终代码
    		for(int j = 0;j < arr.length - 1;j++){	//比较轮次
    			for(int i = 0;i < ((arr.length - 1)- j);i++){	
    				if(arr[i] > arr[i+1]){
    					temp = arr[i];
    					arr[i] = arr[i+1];
    					arr[i+1] = temp;
    				}
    			}
    			System.out.println("第"+ (j+1) +"轮排序:");
    			for(int i = 0 ; i <arr.length;i++){
    				System.out.print(arr[i]+"	");
    			}
    			System.out.println();
    		}
    		
    		System.out.println("===============================================");
    
    		//第一轮比较
    		for(int i = 0 ; i < (5-1) ;i++){	//减一是因为5个数实际只需要比较4次
    			if(arr[i] > arr[i+1]){
    				temp = arr[i];
    				arr[i] = arr[i+1];
    				arr[i+1] = temp;
    			}
    		}
    		System.out.println("第一轮排序:");
    		for(int i = 0 ; i <arr.length;i++){
    			System.out.print(arr[i]+"	");
    		}
    		System.out.println();
    		
    		//第二轮比较
    		for(int i = 0 ; i < (4-1) ;i++){	//减一是因为5个数实际只需要比较4次
    			if(arr[i] > arr[i+1]){
    				temp = arr[i];
    				arr[i] = arr[i+1];
    				arr[i+1] = temp;
    			}
    		}
    		System.out.println("第二轮排序:");
    		for(int i = 0 ; i <arr.length;i++){
    			System.out.print(arr[i]+"	");
    		}
    		System.out.println();
    
    		//第三轮比较
    		for(int i = 0 ; i < (3-1) ;i++){	//减一是因为5个数实际只需要比较4次
    			if(arr[i] > arr[i+1]){
    				temp = arr[i];
    				arr[i] = arr[i+1];
    				arr[i+1] = temp;
    			}
    		}
    		System.out.println("第三轮排序:");
    		for(int i = 0 ; i <arr.length;i++){
    			System.out.print(arr[i]+"	");
    		}
    		System.out.println();
    
    		//第四轮比较
    		for(int i = 0 ; i < (2-1) ;i++){	//减一是因为5个数实际只需要比较4次
    			if(arr[i] > arr[i+1]){
    				temp = arr[i];
    				arr[i] = arr[i+1];
    				arr[i+1] = temp;
    			}
    		}
    		System.out.println("第四轮排序:");
    		for(int i = 0 ; i <arr.length;i++){
    			System.out.print(arr[i]+"	");
    		}
    		System.out.println();
    	}
    }
    

      

     

     

  • 相关阅读:
    多表关联查询_resultMap_集合对象
    mybatis多表关联查询之resultMap单个对象
    十二.filter
    十二.函数式编程
    十一.列表生成式
    十,迭代
    九.高级特性
    八.函数
    七.条件判断和循环
    六.使用list和tuple
  • 原文地址:https://www.cnblogs.com/SongHai/p/14017820.html
Copyright © 2011-2022 走看看