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

      

  • 相关阅读:
    DOM事件
    DOM样式操作
    asp.net-枚举绑定控件
    微信站点 点击 “退回” 按钮退回到主菜单
    阻止iOS中页面弹性回滚,只允许div.phone_body的区块有弹性
    asp.net 微信开发失效汇总
    ECharts使用心得
    PV、UPV、UV简介
    微信浏览器取消缓存的方法
    Visual Studio 2015简体中文企业版/专业版下载+有效激活密钥
  • 原文地址:https://www.cnblogs.com/zhaofeng555/p/3594871.html
Copyright © 2011-2022 走看看