A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© badbaby 初级黑马   /  2015-5-24 21:39  /  571 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个已按从小到大的顺序排序的数组,有9个元素,从终端输入第十个数,要求按原来 的规律将他插入数组中。(该数比第一个数大,比第九个数小)

9 个回复

倒序浏览
插入排序算法的吧!先确认插入位置,该位置后面的元素后移,将输入的值覆盖了插入位置上元素的值!。你可以编译下代码。。
回复 使用道具 举报
import java.util.Scanner;

/*
需求:排序一个随机数组,按排序规律继续插入一个数字……
排序方法:冒泡;
思路:1、随机生成一个10个数字的数组,排序;
          2、加入一个数字,然后再排序…………
*/

public class BubbleSortTest
{
        static void sort(int[] arr)
        {
                System.out.print("{");
                for(int x = 0 ; x<arr.length ; x++)
                {
                        if(x<arr.length-1)
                                System.out.print(arr[x]+", ");
                        else
                                System.out.print(arr[x]+"}");
                }
        }
        static void bubbleSort(int[] arr)//数组排序的方法(冒泡)
        {
                for(int x = 0 ; x<arr.length-1 ; x++)
                {
                        for(int y = 0 ; y<arr.length-x-1 ; y++)
                        {
                                if(arr[y]>arr[y+1])
                                {
                                        swap(arr,y,y+1);
                                }
                        }
                }
        }
        static void swap(int[] arr,int x,int y)//互换赋值
        {
                int temp = arr[x];
                arr[x] = arr[y];
                arr[y] = temp;
        }
       
        public static void main(String[] args)
        {
                Scanner in = new Scanner(System.in);
                int input = in.nextInt();//控制台输入要插入的数字
                int[] array=new int[10];//创建一个10个数字的数组
                for(int x = 0;x<array.length; x++)//给数组内数字随机赋值(0-100)
                {
                        array[x]=(int)(Math.random()*100);
                }
                sort(array);//排序前的数组
                System.out.println();
                bubbleSort(array);//冒泡一下
                sort(array);//排序后的数组
                System.out.println();
                System.out.println("-----------分割线---------");
        //方法准备完毕,开始答题:
                //创建一个多一个数字的数组……这个我也不知道怎么办,就这样吧……
                int[] answerArr = new int[array.length+1];
                answerArr[array.length]=input;
                for(int x = 0;x<array.length;x++)
                {
                        answerArr[x]=array[x];
                }
                System.out.println("插入的数为"+input);
                sort(answerArr);
                bubbleSort(answerArr);
                System.out.println();
                sort(answerArr);
        }
}


回复 使用道具 举报
楼上不错
回复 使用道具 举报
围观大神回答
回复 使用道具 举报
楼上回答的挺好的
回复 使用道具 举报
王骥 中级黑马 2015-5-25 01:15:59
7#
王骥 发表于 2015-5-25 00:10
import java.util.Scanner;

/*

  其实最好用的是自带排序
import java.util.Arrays;
Arrays.sort(int[] array);
回头一看这又长又臭望见谅……
回复 使用道具 举报
谢谢啊。。。。。。。
回复 使用道具 举报
先把插入的输依次比较确定位置,然后把位置后面的数依次后移一位就可以了
回复 使用道具 举报
毕老师的视频里讲数据查找的时候有讲过,可以看下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马