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

      

  • 相关阅读:
    时间序列理论专题之二 时间序列的表达
    Ado.net Entity FrameWork的性能问题
    时间序列专题之三 时间序列的分段线性表示
    Tfs 2010使用小技巧
    时间序列理论专题之一 前言
    绝大多数新技术的学习,都是浪费生命
    Tfs2010简体中文版:翻译永远是问题
    MSsql 查询时默认是不区分大小写。 可以用语句强制sql语句查询时区分大小写 狼
    将.NET dll注册到GAC(Global Assembly Cache)中 狼
    js重载 狼
  • 原文地址:https://www.cnblogs.com/zhaofeng555/p/3594871.html
Copyright © 2011-2022 走看看