• 选择、插入、冒泡排序(从小到大)


    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("-------");
    	}
    }
    
  • 相关阅读:
    一些话
    把视频文件拆成图片保存在沙盒中
    相册视频保存进沙盒
    数据库
    C 计算数组长度
    iOS之与JS交互通信
    iOS之duplicate symbols for architecture x86_64错误
    iOS之隐藏状态栏
    iOS之开发程序之间的跳转及跳转到appStore
    iOS之常用的判NULL的方法
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2618665.html
Copyright © 2020-2023  润新知