A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 燕国庆 高级黑马   /  2012-10-8 16:51  /  1250 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 燕国庆 于 2012-10-23 17:42 编辑

class SortDemo
{
public static void main(String[] args)
{
  int[] arr={3,2,5,9,6,7,11,10,33,23};
  bianLi(arr);
  //maoSelect(arr);
  selectSort(arr);
  bianLi(arr);
}
public static void maoSelect(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])
    {
     int temp=arr[y];
     arr[y]=arr[y+1];
     arr[y+1]=temp;
    }
   }
  }
}
public static void selectSort(int[] arr)
{
  for(int x=0;x<arr.length-1;x++)                     //在这里应该涉及到了“尖朝下的问题”,
  {
   for(int y=x+1;y<arr.length;y++)
   {
    if(arr[x]>arr[y])
    {
     int temp=arr[x];
     arr[x]=arr[y];
     arr[y]=temp;
    }
   }
  }
}
public static void bianLi(int[] arr)
{
  System.out.print("[");
  for(int x=0;x<arr.length;x++)
  {
   if(x<arr.length-1)                                 //此条 语句若换成:  if(x!=length-1)与原来的语句有什么区别没?
{
    System.out.print(arr[x]+", ");
   }
   else
    System.out.println(arr[arr.length-1]+"]");
  }
}
}

这些地方总是感觉有点混沌,理解的不是那么清楚,希望有人能帮忙解释一下,谢谢!

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 欢迎来到15期~~~~

查看全部评分

3 个回复

倒序浏览
我帮你看一下啊,
回复 使用道具 举报

class SortDemo
{
public static void main(String[] args)
{
  int[] arr={3,2,5,9,6,7,11,10,33,23};
  bianLi(arr);
  //maoSelect(arr);
  selectSort(arr);
  bianLi(arr);
}
public static void maoSelect(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])
    {
     int temp=arr[y];
     arr[y]=arr[y+1];
     arr[y+1]=temp;
    }
   }
  }
}
public static void selectSort(int[] arr)
{
  for(int x=0;x<arr.length-1;x++)                     //在这里应该涉及到了“尖朝下的问题”,
  {
   for(int y=x+1;y<arr.length;y++)
   {
    if(arr[x]>arr[y])
    {
     int temp=arr[x];
     arr[x]=arr[y];
     arr[y]=temp;
    }
   }
  }
}
public static void bianLi(int[] arr)
{
  System.out.print("[");
  for(int x=0;x<arr.length;x++)
  {
   if(x<arr.length-1)                                 //此条 语句若换成:  if(x!=length-1)
   //结果一样,x是自加的,知道加到了length-1就停了,也就是说,只要x小于他就一直运行,是一个意思
{
    System.out.print(arr[x]+", ");
   }
   else
    System.out.println(arr[arr.length-1]+"]");
  }
}
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 欢迎来到15期~~~~

查看全部评分

回复 使用道具 举报
自己使用系统自带的画图工具花了半天花的图,分析了冒泡排序和选择排序的实质区别,
通过该图楼主应该可以很清晰的明白程序的内部原理了。

冒泡排序与选择排序的实质区别.JPG (85.68 KB, 下载次数: 22)

冒泡和选择排序的实质区别在哪里

冒泡和选择排序的实质区别在哪里

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 欢迎来到15期~~~~

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马