zoukankan      html  css  js  c++  java
  • 选择、插入、冒泡排序(从小到大)

    package com.wangzhu.main;
    
    public class Main {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		work(new int[] { 1, 1, 1, 1, 1 });
    		work(new int[] { 5, 4, 3, 2, 1 });
    		work(new int[] { 1, 2, 3, 4, 5 });
    		work(new int[] { 1, 7, 2, 3, 3, 4, 5, 5, 7, 8, 9, 10, 9, 8, 7, 6 });
    
    	}
    
    	public static void work(int[] arr) {
    		insertSort(arr);
    		selectSort(arr);
    		bubbleSort(arr);
    	}
    
    	/**
    	 * 插入排序(从小到大):在要排序的一组数中,假设前面(n-1)[n>=2]个数已经排好序,
    	 * 现在要把第n个数插到前面的有序数中,使得这n个数也是排好序的。如此反复,知道全部排好序。
    	 * 
    	 * @param arr
    	 */
    	public static void insertSort(int[] arr) {
    		for (int i = 1, len = arr.length, temp, j; i < len; i++) {
    			temp = arr[i];
    			for (j = i - 1; j >= 0 && temp < arr[j]; j--) {
    				arr[j + 1] = arr[j];
    			}
    			arr[j + 1] = temp;
    		}
    		show(arr);
    	}
    
    	/**
    	 * 选择排序(从小到大):在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
    	 * 然后在剩下的数当中再找最小的数与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
    	 * 
    	 * @param arr
    	 */
    	public static void selectSort(int[] arr) {
    		for (int i = 0, len = arr.length, k; i < len; i++) {
    			k = i;
    			for (int j = i + 1; j < len; j++) {
    				if (arr[j] < arr[k]) {
    					k = j;
    				}
    			}
    			swap(arr, i, k);
    		}
    		show(arr);
    	}
    
    	/**
    	 * 冒泡排序(从小到大):在要排序的一组数中,对当前还未排好序的范围内的全部数, 自上而下对相邻的两个数依次进行比较和调整,
    	 * 让较大的数往下沉,较小的往上冒。 即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
    	 * 
    	 * @param arr
    	 */
    	public static void bubbleSort(int[] arr) {
    		for (int i = 0, len = arr.length - 1; i < len; i++) {
    			for (int j = 0; j < len - i; j++) {
    				if (arr[j] > arr[j + 1]) {
    					swap(arr, j, j + 1);
    				}
    			}
    		}
    		show(arr);
    	}
    
    	private static void swap(int[] arr, int i, int k) {
    		int temp = arr[i];
    		arr[i] = arr[k];
    		arr[k] = temp;
    	}
    
    	public static void show(int[] arr) {
    		System.out.println("-------");
    		for (int i : arr) {
    			System.out.print(i + " ");
    		}
    		System.out.println("-------");
    	}
    }
    
  • 相关阅读:
    【亲身测试成功】windows7 32位操作系统 环境下安装 windows7 64位操作系统
    Deprecated: Function ereg_replace() is deprecated in ……【解决方法】
    20100526(开始上班咯···)
    20100608
    String与string的区别
    Jquery CheckBox全选方法
    与技术无关
    jquery之对象访问(是不是API里出错了呢?)
    工作四个月之后的小感
    关于数据库中的AK(Alternate Key)
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2618665.html
Copyright © 2011-2022 走看看