java数组排序练习题

大家好,我是胡广,接下来把我所学习的东西分享给大家!

昨天主要做了关于int类型数组的四道练习题,不知道我写的代码有木有性能上的问题,还请大神指教

题目一:有一个整数数组,其中存放着序列1,3,5,7,9,11,13,15,17,19。请将该序列倒序存放并输出

上代码:

int[] a= {1,3,5,7,9,11,13,15,17,19};
        for(int i=0;i<a.length;i++) {
            if(i==0) {
                System.out.print("运行结果:");
            }
            if(i==a.length-1) {
                System.out.print(a[a.length-(i+1)]+"\n");
            }else {
                System.out.print(a[a.length-(i+1)]+",");
            }
        }
        System.out.println("解析:循环数组从数组长度-(循环次数+1)开始输出\n");

运行截图:

题目二: 使用选择排序和冒泡排序对一自定义数组进行排序

上代码:

int[] b = {9,87,33,999,435,5,445,2,67,8};
        int temp = 0;

循环输出自定义的数组
        for (int i = 0; i < b.length; i++) {
            if(i==0) {
                System.out.print("自定义数组为:");
            }
            if(i==a.length-1) {
                System.out.print(b[i]+"\n");
            }else {
                System.out.print(b[i]+",");
            }
        }

选择排序
        System.out.println("选择排序(从小到大)");

        for (int i = 0; i < b.length; i++) {
            if(i==0) {
                System.out.print("运行结果:");
            }
            for (int s =i; s < b.length; s++) {
                if(b[i]>b[s]) {
                    temp=b[s];
                    b[s]=b[i];
                    b[i]=temp;
                }
            }
            if(i==b.length-1) {
                System.out.print(b[i]+"\n");
            }else {
                System.out.print(b[i]+",");
            }
        }
        System.out.println("解析:大循环中的第i个元素的值与相同数组的所有元素作比较遇到比自己小的元素两方则调换位置继续往下循环\n");

冒泡排序
        System.out.println("冒泡排序(从大到小)");
        for (int i = 0; i < b.length; i++) {
            if(i==0) {
                System.out.print("运行结果:");
            }
            for (int s =i; s < b.length; s++) {
                if(b[i]<b[s]) {
                    temp=b[s];
                    b[s]=b[i];
                    b[i]=temp;
                }
            }
            if(i==b.length-1) {
                System.out.print(b[i]+"\n");
            }else {
                System.out.print(b[i]+",");
            }
        }
        System.out.println("解析:大循环中的第i个元素的值与相同数组的所有元素作比较遇到比自己大的元素两方则调换位置继续往下循环\n");

运行截图

题目三:先对数组{1,3,9,5,6,7,1,5,4,8}进行排序,然后二分查找法找出数组中的元素8,标出其排序后其下标的位置。

上代码:

int[] c = {1,3,9,5,6,7,1,5,4,8};
        for(int i = 0;i<c.length;i++) {
            if(i==0) {
                System.out.print("运行结果:");
            }
            for(int j = i+1;j<c.length;j++) {
                if(c[i]>=c[j]) {
                    temp=c[i];
                    c[i]=c[j];
                    c[j]=temp;
                }
            }
            if(i==c.length-1) {
                System.out.print(c[i]+"\n");
            }else {
                System.out.print(c[i]+",");
            }
            if(c[i]==8) {
                System.out.print("(找到8啦,下标位置为"+i+"),");
            }
        }
        System.out.println("解析:大循环中的第i个元素的值与相同数组的所有元素作比较遇到比自己小的元素两方则调换位置继续往下循环,if判断为8后并输入其下标\n");

题目四:编写一个程序,生成0-9之间的100个随机整数并且显示每一个数的个数

上代码:

创建一个随机数变量

Random random = new Random();

创建长度为100的int类型数组
        int [] d =new int[100];

创建e变量接收随机数并在d数组的每次循环赋值给d[下标i]
        int e = 0;

创建count变量用来计算100个0-9的随机数分别的个数
        int count = 1;
        for(int i =0;i<100;i++) {
            e=random.nextInt(10);
            if(i==0) {
                System.out.println("产生的100随机数为:");
            }
            if(i%25==0&&i!=0) {
                System.out.println();
            }
                if(i==99) {
                    d[i]=e;
                    System.out.println(e);
                    for (int j= 0; j < d.length; j++) {
                        for(int k = j+1;k<d.length;k++) {
                            if(d[j]>=d[k]) {
                                temp=d[j];
                                d[j]=d[k];
                                d[k]=temp;
                            }
                        }
                    /*
                     * if(j%25==0&&j!=0) { System.out.println(); } if(j==d.length-1) {
                     * 
                     * System.out.print(d[j]+"\n"); }else { System.out.print(d[j]+","); }
                     */
                    }
                }else {
                    d[i]=e;
                    System.out.print(e+",");
                }
            
        }
        System.out.println("计算结果为:");
        for (int i = 0; i < d.length; i++) {
            /*
             * if(i==d.length-1) { System.out.print(d[i]); }else {
             * System.out.print(d[i]+","); }
             */
            if(i!=d.length-1) {
                if(d[i]==d[i+1]) {
                    count++;
                }else {
                    System.out.println("数字"+d[i]+"的个数为"+count+"个");
                    count=1;
                }
            }else {
                System.out.println("数字"+d[i]+"的个数为"+count+"个");
            }
            
        }
        System.out.println("解析:先产生100个0-9随机数存入数组,再把数组从小到大排序,再循环数组判断下标i与下标i+1的值是否相同(利用if判\n断来解决数组下标越界),相同则count+1(count默认为1),否则输出当前数组[下标]的数字+count个数,并把count赋值为0\n");

冒泡排序与选择排序我的理解估计有问题,嘻嘻

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡广毕业设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值