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

      

  • 相关阅读:
    2017-5-15 winform项目总结(知识点补充)
    2017-5-7 time控件 三级联动(省,市,区)
    2017-5-4 进程 线程 用户控件
    2017-5-3 打印控件 MDI 窗体容器 Activated事件
    2017-5-2 对话框控件 MessageBox.Show()用法补充 打开新窗体的3中模式
    窗体移动 窗体阴影API
    2017-4-28 ListView控件学习
    【2017-03-28】JS基础、DOM操作
    【2017-03-24】样式表样式
    【2017-03-24】CSS样式表
  • 原文地址:https://www.cnblogs.com/zhaofeng555/p/3594871.html
Copyright © 2011-2022 走看看