mimiwuqi 发表于 2017-12-20 22:56

冒泡排序加强版!!!!也请大神给看看。。别见笑。

本帖最后由 mimiwuqi 于 2017-12-20 23:28 编辑

学了冒泡排序,感觉很好玩,就把前面学得初级知识组合在一起,算是个加强版的冒泡排序小程序吧。
我也是小白,刚起步,大家一起来学习。大神不要见笑啊{:1_893:}:Dweeqw。
注意,都是int类型的,只能对int类型的进行排序。
程序好像有点问题,当降序排完之后,再升序排就排不出来了。看来想法是好的,结果不是想要的。。。。。
我再找找问题所在,大神也帮帮我,谢谢,见笑了。
以下是代码:
import java.util.*;
public class order{
      public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                for(;;){
                        System.out.println("你要输入多少数字进行排序:");
                        int num=in.nextInt();
                        int a[]=new int;
                        for(int i=0;i<a.length;i++){
                              System.out.println("输入第"+(i+1)+"个数。");
                              a=in.nextInt();
                        }
                        for(;;){
                              System.out.println("你想要什么排序?输入1为降序排序,2为升序排序。");
                              int select=in.nextInt();
                              switch(select){
                                        case 1:
                                        for(int i=0;i<a.length-1;i++){      
                                                for(int j=a.length-1;j>0;j--){
                                                      if(a>a){
                                                                int t=a;
                                                                a=a;
                                                                a=t;
                                                      }
                                                }
                                        }break;
                                        case 2:
                                        for(int i=0;i<a.length-1;i++){      
                                                for(int j=0;j>a.length-1;j++){
                                                      if(a>a){
                                                                int t=a;
                                                                a=a;
                                                                a=t;
                                                      }
                                                }
                                        }break;
                              }
                              System.out.println("排好的顺序为:");
                              for(int i=0;i<a.length;i++){
                                        System.out.println(a);    //编辑的时候能看到下标啊,怎么发出帖子后数组下标没了???应该是a
                              }
                              System.out.println("还要看看另一种排序吗?想,输入y,否则n退出。");
                              String other=in.next();
                              if(other.equals("y")){
                                        System.out.println("咱们继续。");
                              }else{
                                        break;
                              }
                        }
                        System.out.println("想要重新输入一组数来排序吗?想,输入y,否则n退出。");
                              String other=in.next();
                              if(other.equals("y")){
                                        System.out.println("好的继续。");
                              }else{
                                        break;
                              }
                }
      }
}

jxh 发表于 2017-12-22 10:11

本帖最后由 jxh 于 2017-12-22 10:18 编辑

//package tank;
import java.util.*;
public class Start{
      public static void main(String[] args){
                Scanner in=new Scanner(System.in);
                System.out.println("你要输入多少数字进行排序:");
                int num=in.nextInt();
                int [] a=new int;//创建一个数组
                for(int i=0;i<a.length;i++){
                        System.out.println("输入第"+(i+1)+"个数。");
                        a=in.nextInt();
                }
                for(;;){
                        System.out.println("你想要什么排序?输入1为降序排序,2为升序排序。");
                        int select=in.nextInt();
                        switch(select){
                        case 1:
                              for(int i=0;i<a.length-1;i++){                //降序排列   
                                        for(int j=a.length-1;j>0;j--){
                                                if(a>a){
                                                      int t=a;
                                                      a=a;
                                                      a=t;
                                                }
                                        }
                              }
                              break;
                        case 2:
                              for(int i=0;i<a.length-1;i++){                //升序排列
                                        for(int j=a.length-1;j>0;j--){
                                                if(a<a){
                                                      int t=a;
                                                      a=a;
                                                      a=t;
                                                }
                                        }
                              }
                              break;
                        }
                        
                        System.out.println("排好的顺序为:");
//                        for(int i=0;i<a.length;i++){
//                              System.out.println(a);
//                        }
                        //使用foreach 遍历数组
//                        for(元素类型t 元素变量x : 遍历对象obj){
//                           引用了x的java语句;
//                        }
                     for (int i : a) {
                              System.out.println(i);//逐个输出数组元素的值
                        }
                        
                        System.out.println("还要看看另一种排序吗?想,输入y,否则n退出。");
                        String other=in.next();
                        if(other.equals("y")){
                              continue;//使用关键字 返回到 for循环开头
                        }else{
                              break;//跳出for循环
                        }
                }//外层 for End
               
      }
}
改好了 应该没有BUG麻烦评分一下 给点CB

qq8945051 发表于 2018-1-4 00:11

package 排序;

import java.util.*;

public class Start {
        public static void main(String[] args) {
                String other;
                Scanner in = new Scanner(System.in);
                System.out.println("你要输入多少数字进行排序:");
                int num = in.nextInt();
                int[] a = new int;
                for (int i = 0; i < a.length; i++) {
                        System.out.println("输入第" + (i + 1) + "个数:");
                        a = in.nextInt();
                }
                Start s = new Start();
                a = s.num3(a);
                System.out.println("你想要什么排序?输入1为降序排序,2为升序排序。");
                int select = in.nextInt();
                do {
                        switch (select) {
                        case 2:
                                System.out.print("升序排序:");
                                for (int i = 0; i < a.length; i++) {
                                        System.out.print(a + " ");
                                }
                                System.out.println("");
                                break;

                        case 1:
                                System.out.print("降序排序:");
                                for (int i = a.length; i > 0; i--) {
                                        System.out.print(a + " ");
                                }
                                System.out.println("");
                                break;
                        }
                        System.out.println("还要看看另一种排序吗?想,输入任意键,n退出。");
                        other = in.next();
                        if (select==1) {
                                select=2;
                        }else{
                                select=1;
                        }
                } while (!other.equals("n"));
                System.out.println("结束!");
        }

        // 1.第一种冒泡排序
        public int[] num1(int[] a) {
                for (int i = 0; i < a.length - 1; i++) {
                        for (int j = 0; j < a.length - 1; j++) {
                                // 比较大小移位
                                if (a > a) {
                                        int temp = a;
                                        a = a;
                                        a = temp;
                                }
                        }
                }
                return a;
        }

        // 2.数组的选择排序
        public int[] num2(int[] a) {
                for (int i = 1; i < a.length; i++) {
                        int index = 0;
                        for (int j = 1; j <= a.length - i; j++) {
                                if (a > a) {
                                        index = j;
                                }
                        }
                        int temp = a;
                        a = a;
                        a = temp;
                }
                return a;
        }

        // 3.数组的插入排序
        public int[] num3(int[] a) {
                int n = a.length;
                for (int i = 1; i < n; i++) { // 将a插入a
                        int t = a;
                        int j;
                        for (j = i - 1; j >= 0 && t < a; j--) {
                                a = a;
                        }
                        a = t;
                }
                return a;
        }

        // 4.设置两层循环
        public int[] num4(int[] a) {
                for (int i = 0; i < a.length - 1; i++) {
                        for (int j = 0; j < a.length - 1; j++) {
                                // 比较大小移位
                                if (a > a) {
                                        int temp = a;
                                        a = a;
                                        a = temp;
                                }
                        }
                }
                return a;
        }
        //5.Arrays.sort排序
        public int[] num5(int[] a) {
                Arrays.sort(a);
                return a;
        }

}

mimiwuqi 发表于 2017-12-20 23:06

程序好像有点问题,当降序排完之后,再升序排就排不出来了。看来想法是好的,结果不是想要的。。。。。
我再找找问题所在,大神也帮帮我,谢谢,见笑了。

学习技术那家强 发表于 2017-12-20 23:06

{:301_999:} Java从入门到放弃我已经不想这个了!

kk1212 发表于 2017-12-20 23:19

学习一下,感谢分享代码

pmc 发表于 2017-12-21 00:02

任真地看了楼主的源代码,不过由于没学过Java 有些地方还是没看懂,不过关于楼主提出的问题我倒是这么想的:降序排完之后没必要再升序排列了,直接反着遍历输出就好了。
楼主那个冒泡的循环判断语句可以稍微改一下,外层循环每循环一次,内层循环可以少循环一次了,可以稍微提高一下效率。

clocks 发表于 2017-12-21 00:06

加油慢慢积攒 新一代大神正在诞生加油

让导弹飞 发表于 2017-12-21 00:12

算法高于一切,你这方法效率太低了,本人也学习中。

新司机丶听雪 发表于 2017-12-21 14:10

我讨厌数据结构!!

mimiwuqi 发表于 2017-12-21 15:40

让导弹飞 发表于 2017-12-21 00:12
算法高于一切,你这方法效率太低了,本人也学习中。

现在不是我算法低的问题,结果都不对呢。。。。

mimiwuqi 发表于 2017-12-21 15:42

pmc 发表于 2017-12-21 00:02
任真地看了楼主的源代码,不过由于没学过Java 有些地方还是没看懂,不过关于楼主提出的问题我倒是这么想的: ...

毕竟是刚学,没有什么基础,算法什么的还真不懂呢。
页: [1] 2
查看完整版本: 冒泡排序加强版!!!!也请大神给看看。。别见笑。