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

1.冒泡排序。2.左旋数组K次,3.将数组中偶数置前,奇数置后

时间:2019-10-13 10:57:37      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:int end   一个   遍历   奇数   sort   变量   冒泡   利用   遍历数组   

冒泡排序:

 //无序 [0, a.length - i)
        // 有序 [a.length - i, a.length)
        // 冒泡过程
        无序在前,有序在后。每次都遍历无序区间,每一次比较出一个数放在后面。

            public static void bubbleSort(int[] a) {
    for (int i = 0; i < a.length; i++) {
        boolean sorted = true;
        // 无序 [0, a.length - i)
        // 有序 [a.length - i, a.length)
        // 冒泡过程
        for (int j = 1; j < a.length - i; j++) {
            if (a[j - 1] > a[j]) {
                swap(a, j - 1, j);
                sorted = false;
            }
        }

        if (sorted == true) {
            return;
        }
    }
}

代码二:
public static void bubbleSort1(int[] a) {
    for (int i = 0; i < a.length; i++) {
        // 无序   [i, a.length)
        // 有序 [0, i)

        for (int j = a.length - 1; j > i; j--) {
            if (a[j] < a[j - 1]) {
                swap(a, j, j - 1);
            }
        }
    }
}

2.左旋数组:K次
要判断K与数组长度的关系。
当K<arr.length 正常处理
当K>arr.length
K=K%arr.length
做法:先把原数组后K个数组拷贝出来
把原数组前K-arr.length后移K位(利用数组拷贝覆盖原来的)
将之前拷贝的新数组拷贝到后移后的数组  

3.数组偶数放前,奇数放后
遍历整个数组,定义两个变量,一个遍历数组,一个作为标记,它之前的全是偶数,停留的位置是奇数,以后遇到了偶数和它交换位置。

    public static int[] partition1(int[] nums) {
    int begin = 0;
    int end = nums.length - 1;
    // [begin, end] 区间内的数是未判断的数
    // [0, begin)   偶数
    // [end, nums.length) 奇数

    while (begin < end) {
        while (begin < end && nums[begin] % 2 == 0) {
            begin++;
        }

        while (begin < end && nums[end] % 2 != 0) {
            end--;
        }

        swap(nums, begin, end);
    }

    return nums;
}

1.冒泡排序。2.左旋数组K次,3.将数组中偶数置前,奇数置后

标签:int end   一个   遍历   奇数   sort   变量   冒泡   利用   遍历数组   

原文地址:https://blog.51cto.com/14232658/2441985

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