java吧 关注:1,305,861贴子:12,872,413
  • 6回复贴,共1

啊。。。。排序的一个问题,理解不能啊。。。。

只看楼主收藏回复


大家觉得这两个输出分别会是什么样的呢?他们为什么不一样啊。。。。


1楼2012-12-18 06:20回复
    谁帮忙看下。。。多谢


    2楼2012-12-18 10:00
    回复
      2026-07-14 22:06:54
      广告
      不感兴趣
      开通SVIP免广告
      一个是升序输出 一个正常输出。。。。为何要用 j?..直接用a[i+1]不就行么。。。


      IP属地:广东3楼2012-12-18 10:59
      收起回复
        晚了!你这是典型的冒泡排序!应该正确的代码是:
        public static void main(String[] args) {
        int[] a = { 3, 5, 1, 9, 7, 2, 0 };
        for (int i = 0; i < a.length; i++) {
        int temp = a[i];
        int count = 0;
        for (int j = i + 1; j < a.length; j++) {
        if (temp > a[j]) {
        count = j;
        temp = a[j];
        a[count] = a[i];
        a[i] = temp;
        }}
        System.out.println(a[i]);
        }
        for (int i = 0; i < a.length; i++) {
        System.out.println(a[i]);
        }}
        其中可以省掉count直接代码是:
        public static void main(String[] args) {
        int[] a = { 3, 5, 1, 9, 7, 2, 0 };
        for (int i = 0; i < a.length; i++) {
        int temp = a[i];
        for (int j = i + 1; j < a.length; j++) {
        if (temp > a[j]) {
        temp = a[j];
        a[j] = a[i];
        a[i] = temp;
        }}
        System.out.println(a[i]);
        }
        for (int i = 0; i < a.length; i++) {
        System.out.println(a[i]);
        }}


        4楼2012-12-18 11:09
        回复
          楼主自己可以测试下啊。。


          IP属地:广东5楼2012-12-18 17:56
          回复
            上面程序的结果,楼主的自己看看吧


            IP属地:广东6楼2012-12-18 17:58
            回复