码迷,mamicode.com
首页 > 编程语言 > 详细

Java选择排序,插入排序,快速排序

时间:2017-07-12 01:05:47      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:插入   string   print   class   logs   需要   bre   main   java   

public class Test {
    public static void main(String[] args) {
        int a[] = { 1, 2, 3, 4, 5 };
        // 选择排序(a);
        // 插入排序(a);
        quicksort(a, 0, a.length - 1);
        System.out.print("排序后:");
        for (int n : a) {
            System.out.print(n + " ");
        }
    }

    static void 选择排序(int[] a) {
        int pos = 0;
        for (int i = 0; i < a.length - 1; i++) {
            pos = i;
            // 定位到i之后的最值
            for (int j = i; j < a.length; j++) {
                if (a[pos] < a[j]) {
                    pos = j;
                }
            }

            // 最值和i值交换
            int t = a[pos];
            a[pos] = a[i];
            a[i] = t;

        }
    }

    static void 插入排序(int[] arr) {

        for (int i = 1; i < arr.length; i++) {
            System.out.print(i + ":");
            // 假定(0->(j-1))是有序的,看j排在哪里
            for (int j = i; j > 0; j--) {
                if (arr[j] > arr[j - 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j - 1];
                    arr[j - 1] = temp;
                } else {
                    // 假定前面是有序的,则只需要交换一次即可
                    break;
                }
            }
            for (int n : arr) {
                System.out.print(n + " ");
            }
            System.out.println();
        }

    }

    static void quicksort(int arr[], int left, int right) {
        if (left < right) {
            // 定位最左
            int key = arr[left];
            int i = left;
            int j = right;
            while (i < j) {
                while (i < j && arr[j] < key) {
                    // 高标左移←
                    j--;
                }
                if (arr[i] != arr[j]) {
                    // 高位:小的往左边拉
                    arr[i] = arr[j];
                }
                while (i < j && arr[i] > key) {
                    // 低标右移→
                    i++;
                }
                if (arr[i] != arr[j]) {
                    // 低位:大的往右边拉
                    arr[j] = arr[i];
                }
            }
            arr[i] = key;

            quicksort(arr, left, i - 1);
            quicksort(arr, i + 1, right);
        }
    }

}

 

Java选择排序,插入排序,快速排序

标签:插入   string   print   class   logs   需要   bre   main   java   

原文地址:http://www.cnblogs.com/AndyHoo/p/7153198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!