黑马程序员技术交流社区

标题: 排序问题 赶紧的 兄弟们 [打印本页]

作者: badbaby    时间: 2015-5-24 21:39
标题: 排序问题 赶紧的 兄弟们
一个已按从小到大的顺序排序的数组,有9个元素,从终端输入第十个数,要求按原来 的规律将他插入数组中。(该数比第一个数大,比第九个数小)

作者: qq496099229    时间: 2015-5-24 23:37
插入排序算法的吧!先确认插入位置,该位置后面的元素后移,将输入的值覆盖了插入位置上元素的值!。你可以编译下代码。。
作者: 王骥    时间: 2015-5-25 00:10
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);
        }
}



作者: T-fra    时间: 2015-5-25 00:30
楼上不错
作者: 348532020    时间: 2015-5-25 00:53
围观大神回答
作者: LoveMyself    时间: 2015-5-25 01:10
楼上回答的挺好的
作者: 王骥    时间: 2015-5-25 01:15
王骥 发表于 2015-5-25 00:10
import java.util.Scanner;

/*

  其实最好用的是自带排序
import java.util.Arrays;
Arrays.sort(int[] array);
回头一看这又长又臭望见谅……

作者: badbaby    时间: 2015-5-26 19:30
谢谢啊。。。。。。。
作者: 海洋你好    时间: 2015-5-26 20:10
先把插入的输依次比较确定位置,然后把位置后面的数依次后移一位就可以了
作者: 18530919536    时间: 2015-5-26 21:30
毕老师的视频里讲数据查找的时候有讲过,可以看下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2