码迷,mamicode.com
首页 > 其他好文 > 详细

选择排序 冒泡排序 简单插入排序

时间:2014-09-10 17:21:40      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   ar   for   数据   

排序:

bubuko.com,布布扣
public class SortDemo {
    public static void main(String[] args) {
        int[] arr = { 5, 8, 9, 12, 55, 565, 421, 12, 2512, -5, -56 };
        // int[] arr = { 6, 9, 4589, 442, 458, 5232, -788, 7, 545, -44, 55, -11
        // };
        // selectionSort(arr);
        // bubbleSort(arr);
        directInsertSort(arr);
        printSort(arr);
    }

    // 选择排序 每趟都确定arr[i]的数 每次都是arr[i]的数和后面的所有arr[j]的数比较 满足就交换
    // 第一趟 int[] arr = { -56, 8, 9, 12, 55, 565, 421, 12, 2512, -5, 5 };
    private static void selectionSort(int[] arr) {
        // 第一个开始比到最后第二个就可以了
        for (int i = 0; i < arr.length - 1; i++) {
            // 第二个开始到最后一个
            for (int j = i + 1; j < arr.length; j++) {
                // 某个和后面所有的比较
                if (arr[i] > arr[j]) {
                    int temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
            }
        }
    }

    // 冒泡排序 每趟两两交替比较 一趟下来最大/最小的已经在最端了
    // 第一趟 int[] arr = {5,8,9,12,55,421,12,565,-5,-56,2512}
    private static void bubbleSort(int[] arr) {
        // 我的思维逻辑习惯这个
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                }
            }
        }

        // for (int i = 1; i < arr.length; i++) {
        // for (int j = 0; j < arr.length - i; j++) {
        // if (arr[j] > arr[j + 1]) {
        // int temp = arr[j + 1];
        // arr[j + 1] = arr[j];
        // arr[j] = temp;
        // }
        // }
        // }

        // 数据结构正统
        // for (int i = 0; i < arr.length - 1; i++) {
        // for (int j = arr.length - 1; j > i; j--) {
        // if (arr[j] < arr[j - 1]) {
        // int temp = arr[j - 1];
        // arr[j - 1] = arr[j];
        // arr[j] = temp;
        // }
        // }
        // }
    }

    // 直接插入排序 相当于打牌
    // 变化的那次 int[] arr = { 5, 8, 9, 12, 55, 565, 565, 12, 2512, -5, -56 };  temp=421 i=6
    // 变化的那次 int[] arr = { 5, 8, 9, 12, 55, 421, 565, 12, 2512, -5, -56 };
    private static void directInsertSort(int[] arr) {
        // 第二个元素开始遍历
        for (int i = 1; i < arr.length; i++) {
            int temp = arr[i];
            int j;
            for (j = i; j > 0; j--) {
                if (arr[j - 1] > temp) {
                    // 数组下标后移
                    arr[j] = arr[j - 1];
                } else {
                    break;
                }
            }
            // break代表不需要比较了 直接赋值
            arr[j] = temp;
        }
    }

    private static void printSort(int[] arr) {
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }

}
View Code

 

选择排序 冒泡排序 简单插入排序

标签:style   blog   http   color   os   io   ar   for   数据   

原文地址:http://www.cnblogs.com/manusas/p/3964763.html

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