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

冒泡排序:

 //无序 [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;
}

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

时间: 2024-10-24 20:49:56

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

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScript使用push方法添加一个元素到数组末 JavaScript数组函数unshift、shift、pop、push使用

push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( item1 [,items... ] )参数 参数 描述item1 任意类型添加到当前数组末尾处的元素.items 可选参数/任意类型要添加到当前数组末尾处的其他项,可以有多个.注意:如果添加的元素类型为数组类型(Array),仍然会被当作一个元素看待,只是这个元素是数组类型而已.如果要合并两个数组,请使

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip

push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( item1 [,items... ] )参数 参数 描述item1 任意类型添加到当前数组末尾处的元素.items 可选参数/任意类型要添加到当前数组末尾处的其他项,可以有多个.注意:如果添加的元素类型为数组类型(Array),仍然会被当作一个元素看待,只是这个元素是数组类型而已.如果要合并两个数组,请使

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

转:最小区间:k个有序的数组,找到最小区间使k个数组中每个数组至少有一个数在区间中

转:http://www.itmian4.com/thread-6504-1-1.html 最小区间原题 k个有序的数组,找到最小的区间范围使得这k个数组中,每个数组至少有一个数字在这个区间范围内.比如: 数组1:[4, 10, 15, 24, 26] 数组2:[0, 9, 12, 20] 数组3:[5, 18, 22, 30] 最小的区间是[20, 24],这个区间包含了数组1中的24,数组2中的20,数组3中的22 思考时间~~~ 分析 该题看起来还算比较简单,大家通常都会想到:为每一个数组

数组中累加和为k的最大子数组的长度

package com.hzins.suanfa; import java.util.HashMap; public class demo { /** * 数组中累加和为k的最大子数组的长度 * @param arr * @param k * @return */ public static int maxLengh(int[] arr,int k){ if(arr == null || arr.length == 0){ return 0; } HashMap<Integer, Integer

给定两个数组,这两个数组是排序好的,让你求这两个数组合到一起之后第K大的数。

题目:给定两个数组,这两个数组是排序好的,让你求这两个数组合到一起之后第K大的数. 解题思路: 首先取得数组a的中位数a[aMid],然后在b中二分查找a[aMid],得到b[bMid],b[bSt]到b[bMid]的数小于等于a[aMid],b[bMid+1]到b[bEd]大于等于a[aMid],这样数组a和数组b就被划分为了两个部分,第一个部分的数小于等于a[aMid],第二部分的数大于等于a[aMid],然后统计这两个区域数的个数,个数相加等于k就返回,否则重复二分查找.代码如下: def

Leetcode 629.K个逆序对数组

K个逆序对数组 给出两个整数 n 和 k,找出所有包含从 1 到 n 的数字,且恰好拥有 k 个逆序对的不同的数组的个数. 逆序对的定义如下:对于数组的第i个和第 j个元素,如果满i < j且 a[i] > a[j],则其为一个逆序对:否则不是. 由于答案可能很大,只需要返回 答案 mod 109 + 7 的值. 示例 1: 输入: n = 3, k = 0 输出: 1 解释: 只有数组 [1,2,3] 包含了从1到3的整数并且正好拥有 0 个逆序对. 示例 2: 输入: n = 3, k =

和至少为K的最短子数组

返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K 如果没有和至少为 K 的非空子数组,返回 -1 . 示例 1: 输入:A = [1], K = 1 输出:1 示例 2: 输入:A = [1,2], K = 4 输出:-1 示例 3: 输入:A = [2,-1,2], K = 3 输出:3 1 <= A.length <= 50000 -10 ^ 5 <= A[i] <= 10 ^ 5 1 <= K <= 10 ^ 9 这道题的关键在于我们要知道各个区间的

数组的创建,及数组的方法

一.如何创建一个数组? 创建数组的方法常见的有三种: 第一种: var arr = new Array(3); arr[0] = "hello"; arr[1] = "world"; arr[2] = 2017; 第二种: var arr2 = new Array("hello","world","2017"); 第三种: var arr3 = ["hello","world&