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();
	}
}

  

 

 

原文地址:https://www.cnblogs.com/SongHai/p/14017820.html