黑马程序员技术交流社区

标题: 有关冒泡排序算法程序问题 [打印本页]

作者: 许庭洲    时间: 2012-4-28 13:12
标题: 有关冒泡排序算法程序问题
请求高手,下面冒泡排序主要程序,该程序运行通不过,请哪位高手帮忙指正!
int [] array = new int;
int temp = 0 ;
for (int i = 0 ; i < array.Length; i++)
{
  for (int j = i + 1 ; j < array.Length-1 ; j++)
  {
    if (array[j] < array[i])
    {
      temp = array[i] ;
      array[i] = array[j] ;
      array[j] = temp ;
    }
  }
}

作者: 郭耀强    时间: 2012-4-28 13:59
int[] math = { 1, 7, 81, 1, 87, 10 };
            int hold = 0, j;
            for (int i = 0; i < math.Length; i++)
            {
              
                for (j = 0; j < math.Length - i - 1; j++)
                {
                    if (math[j] > math[j + 1])
                    {
                        hold = math[j];
                        math[j] = math[j + 1];
                        math[j + 1] = hold;
                        
                    }
                }
            }
作者: 郭耀强    时间: 2012-4-28 14:00
你实例话一组数字啊,你的“int [] array = new int”不对啊,要不你这样写啊
int [] array = new int[]{};
或则int [] array = new int[10];
作者: 肖腾宇    时间: 2012-4-28 14:04
定义数组出错了
作者: 黑马李亮    时间: 2012-4-28 15:03
int[] sort(int[] arr)
{
            
            for (int i = 0; i < arr.Length; i++)
            {
              
                for (int j = 0; j < arr.Length - i - 1; j++)
                {
                    if (arr[j] > arr[j + 1])
                    {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                        
                    }
                }
                return arr;
            }
}
作者: 陈世伟    时间: 2012-4-28 16:59
int[] array = new int[]{10,15,22,50,46,85};
            int temp = 0 ;
            for (int i = 0 ; i < array.Length; i++)
                {
                  for (int j = 0; j < array.Length-1-i ; j++)
                      {
                        if (array[j] < array[j+1])
                           {
                             temp = array[j] ;
                             array[j] = array[j+1] ;
                             array[j+1] = temp ;
                           }
                      }
                }
            for (int a = 0; a < 6; a++)
            {
                Console.WriteLine(array[a]);
            }
            Console.ReadKey();
作者: 过客    时间: 2012-4-28 17:22
数组定义错了,而且数组没有值,第二层for循环的条件应该为(arr.Length - i - 1)。
作者: 黄燕京    时间: 2012-4-28 19:42
int [] array = new int; 不对,不能这样定义吧
作者: 张博    时间: 2012-4-30 22:48
数组定义的不对啊,int[] name={2,12,4,23,4,23,6,6,7,54}
作者: 错,谁的错丶    时间: 2012-4-30 23:11
int [] array = new int;
数组定义错了。
冒泡排序的两层循环:
int temp = 0;
for(int i =0;i<array.Lenght-1; i++)
  {
    for(int j =0;j<array.Lenght--1-i; j++)
       {
          if(array[j]<array[j+1])
           {
                     int temp = array[j];
                     array[j] = array[j+1];
                     array[j+!] = temp;
           }

      }
}
请参照一下。
作者: 黑马王刚    时间: 2012-5-1 00:53
数组定义出错,int [] array=new int[];
作者: i蓝蓝蓝天    时间: 2012-5-1 22:02
仔细看了下仁兄的代码,发现仁兄连冒泡算法的基本思想都没搞清,数组也确实是定义错了,而且看仁兄在for循环里面写的,就拿的arr[i]和arr[j]相比,这个不是选择排序的基本思想嘛。冒泡排序的基本思想是相邻的两个元素进行比较,用i控制的是遍历的次数,每次遍历完之后所要求的最值往后沉,所以下次再进行遍历的时候,最后一个元素就可以不要在参与到比较里面来了,因此j的条件有一个-i的值,因为你遍历了几次那么就有几个数可以不参与比较了,因为是相邻的值进行比较所以j的值需要减1,因为是拿arr[j]和arr[j+1]进行比较,所以j的条件需减1要不然就会有数组越界的错误。在此讲的可能不是很清楚,希望楼主再去看下相关视频。




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