将一个任意整数插入到已排列的整型数组中,插入后,数组中的数仍保持有序

实现代码:

package homework;

import java.util.Scanner;

public class HomeWork {

	public static void main(String[] args) {
		//將输入的数字插入到一个有序的数组中的合适位置

		Scanner input = new Scanner(System.in);

		System.out.println("请输入一个数字:");

		int num = input.nextInt();

		//有序的整型数组
		int[] nums = {20,23,50,53,65,68};

		//1,找到合适的位置   索引
		int index = nums.length;

		for(int i = 0;i < nums.length;i++){

			if(nums[i] > num){
				index = i;
				break;
			}
		}

		//进行新数组的构建,在index之前直接复制,index则是输入数字的位置,
		//index之后的每一位元素后移

		int[] newNums = new int[nums.length+1];

		for(int i = 0;i<newNums.length;i++){
			if(i < index){
				newNums[i] = nums[i];
			}else if(i == index){
				newNums[i] = num;
			}else{
				newNums[i] = nums[i - 1];
			}
		}

		//输出新数组
		System.out.println("插入后的结果");
		for(int i = 0;i<newNums.length;i++){
			System.out.println(newNums[i]);
		}

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

	}

}

  

时间: 2024-10-01 07:35:58

将一个任意整数插入到已排列的整型数组中,插入后,数组中的数仍保持有序的相关文章

判断有序整型数组中是否存在两数,相加之和等于给定的任意整数

前几天参加C++的一个面试,面试官问到这样一个问题,当时给出的第一答案是1. 遍历数组中的元素,两数相加与给定的整数进行比较,此种方法在数组个数和整数个数较小时可用. 两数之和等于任意整数,肯定有一个数小于等于任意整数的1/2,另一个数大于等于任意整数的1/2,那么只需要判断整数的一半,由于数组是排序的,可通过二分查找的方式 直接遍历数组中小于等于任意整数一半的元素,通过二分查找的方式,在数组中的有序元素不连续时,相比方法2更节省许多运算

[微软]有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小_利用排列组合思路解决_python版

(原题出自微软公司面试题)问题如下:有两个序列a,b,大小都为n,序列元素的值任意整数,无序:要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小.例如:a=[100,99,98,1,2, 3]b=[1, 2, 3, 4,5,40] 题目是看到QQ群友发的,网上也百度了下目前已经有好几种解法了.写了半天有点晕,后面忽然想到中学时候数学里面的排列组合的方法.方法对于较短的list可行,长list组合情况太多,可能耗时太长或溢出. 1 from itertools im

在一个文件中有10G个整数,乱序排列,要求找出中位数

 题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存). 关于中位数:数据排序后,位置在最中间的数值.即将数据分成两部分,一部分大于该数值,一部分小于该数值.中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N/2的均值(那么10G个数的中位数,就第5G大的数与第5G+1大的数的均值了). 分析:明显是一道

任意整数分频Verilog(占空比50%)

程序实现任意整数分频的功能,已在modelsim中通过验证. 1 //`define N 5 2 module div_N ( 3 input CLK, // 基准时钟 4 output CLK_div_N, // N分频后得到的时钟 5 input rst 6 ); 7 wire [31:0] N=5; // ★ N为分频系数,N≥2即可,N的值为CLK除以CLK_div_N后取整(四舍五入) 8 9 /******************** 产生备用时钟1 ***************/

训练三:求任意整数的降序数

题目要求: 对一个五位的任意整数,求出琦降序数 算法提示:将整数的每一位分离到一维整形数组中,再将数组a的元素按照降序排列,最后输出数组元素值, 试建立一个NUM类,完成上述操作 #include<iostream> using namespace std; class NUM { public: NUM(int x);//定义一个带参数的构造函数 void NUM_fengjie(); void NUM_paixu(); void NUM_display(); private: int a[

【编程题目】有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;(需要回头仔细研究)

32.(数组.规划)有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序:要求:通过交换 a,b 中的元素,使[序列 a 元素的和]与[序列 b 元素的和]之间的差最小.例如: var a=[100,99,98,1,2,3];var b=[1,2,3,4,5,40]; 首先,目标一定是先找到n个数字,使得数字和比总和的一半小,但是最接近. 思路一:开始看这道题跟之前学的动态规划很像,就想用动态规划来解.但是....做不出来........... 必须要选一半的数字让我头都大了. 思路二:

任意整数分频与半整数分频

任意整数: http://www.cnblogs.com/qiweiwang/archive/2010/12/17/1909482.html 半整数: http://www.cnblogs.com/qiweiwang/archive/2010/11/30/1892169.html

10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。

题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存). 关于中位数:数据排序后,位置在最中间的数值.即将数据分成两部分,一部分大于该数值,一部分小于该数值.中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N/2的均值(那么10G个数的中位数,就第5G大的数与第5G+1大的数的均值了). 分析:明显是一道工

在一组降序排列的数组中插入一个数据,插入后,数组中数据依然按降序排列

分析: 1.数组固定,是一个倒序的数组 2.插入一个数据,这个数据插在哪呢,要比较,与数组中所有的元素比较,这里需要一个循环,因为是降序的数组,所以当第一次遇到比自己小的,那么这个位置就是要插入的位置 3.因为上一步被占了位置,那么从这个插入的数据开始,后面的原本的数据都得向右移一位 /** * */ package com.cn.u4; import java.util.Scanner; /** * @author Administrator *向有序数组中插入学员成绩 * 在一组降序排列的数