zoukankan      html  css  js  c++  java
  • java排序算法-交换排序

    public class ExchangeSortUtils {
    
    	// 冒泡
    	public static void bubbleSort(int[] array) {
    		int length = array.length;
    		int temp;
    		boolean isSort;
    		for (int i = 1; i < length; i++) {
    			isSort = false;
    			for (int j = 0; j < length - i; j++) {
    				if (array[j] > array[j + 1]) {
    					// 交换
    					temp = array[j];
    					array[j] = array[j + 1];
    					array[j + 1] = temp;
    					isSort = true;
    				}
    			}
    			if (!isSort)
    				break; // 如果没有发生交换,则退出循环
    		}
    	}
    
    	public static int getMiddle(int[] arr, int low, int high) {
    		if (low < high) {
    			int tmp = arr[low]; // 数组的第一个作为中轴
    			while (low < high && arr[high] > tmp) {
    				high--;
    			}
    			arr[low] = arr[high]; // 比中轴小的记录移到低端
    			while (low < high && arr[low] < tmp) {
    				low++;
    			}
    			arr[high] = arr[low]; // 比中轴大的记录移到高端
    			arr[low] = tmp; // 中轴记录到尾
    		}
    		return low; // 返回中轴的位置
    	}
    	
    	public static int getMiddle2(int[] arr, int low, int high) {
    		int tmp = arr[low]; // 数组的第一个作为中轴
    		while (low < high) {
    			while (low < high && arr[high] > tmp) {
    				high--;
    			}
    			arr[low] = arr[high]; // 比中轴小的记录移到低端
    			while (low < high && arr[low] < tmp) {
    				low++;
    			}
    			arr[high] = arr[low]; // 比中轴大的记录移到高端
    		}
    		arr[low] = tmp; // 中轴记录到尾
    		return low; // 返回中轴的位置
    	}
    
    	//快速排序
    	public static void quickSort(int[] arr, int low, int high) {
    		if (low < high) {
    			int middle = getMiddle(arr, low, high); // 将arr数组进行一分为二
    			quickSort(arr, low, middle - 1); // 对低字表进行递归排序
    			quickSort(arr, middle + 1, high); // 对高字表进行递归排序
    		}
    	}
    
    	public static void main(String[] args) {
    		quickSortTest();
    		bubbleSortTest();
    	}
    
    	private static void quickSortTest() {
    		int[] sortArray = { 5, 2, 4, 1, 3 };
    		System.out.print("快速排序前: ");
    		Utils.printArray(sortArray);
    		quickSort(sortArray, 0, sortArray.length - 1);
    		System.out.print("快速排序后: ");
    		Utils.printArray(sortArray);
    	}
    
    	private static void bubbleSortTest() {
    		int[] sortArray = { 5, 2, 4, 1, 3 };
    		System.out.print("冒泡排序前: ");
    		Utils.printArray(sortArray);
    
    		bubbleSort(sortArray);
    		System.out.print("冒泡排序后: ");
    		Utils.printArray(sortArray);
    	}
    }
    

      

  • 相关阅读:
    简单使用GDB
    【老人孟岩经验谈】如何学习一本新的编程语言
    【做存档】如何争取到真正有用的人脉?
    回头来看C语言里的static
    Spring MVC 教程,快速入门,深入分析[1220]
    eclipse ibabis代码生成插件abator功能扩展
    在MyEclipse中配置Tomcat服务器
    将远程调试的控制台信息输出至Eclipse
    LOG4J.PROPERTIES配置详解
    java Map 怎么遍历
  • 原文地址:https://www.cnblogs.com/zhaofeng555/p/3594871.html
Copyright © 2011-2022 走看看