返回列表 回复 发帖

请教关于c语言的排序算法。

选择排序:for(i=0;i<n-1;i++)
  {
      k=i;文字
      for(j=i+1;j<n;j++)
      if(a[j]<a[k])k=j;
      t=a[k];a[k]=a;a=t;
  }
比较排序:for(i=0;i<n-1;i++)
  {

      for(j=i+1;j<n;j++)
      if(a[j]<a)
     { t=a[j];a[j]=a;a=t;  }
  }
我只把重要的语句写出。

这是老师给的例子,我在看选择排序的时候,有些不解,为什么多用一个k,用i和j完全可以搞定啊,
于是我改了一下,就成了老师给的比较排序,我看二者差不多。我指的是在构造算法的思维上。


可能是我对这两种算法的理解有些偏差,所以请指教。
写之前好好的,怎么一发帖,就变样了,比较算法的a没打印出来呀。
选择排序是一种比较优化的排序,它定义的k意义在于表示一次循环后找到的最小(大)值的位置,然后让第i个(第几次循环就是第几个)植交换,这样在第一轮循环中就把最小(大)的值换到了最前面,如果只用i,j 的话,就没有办法找出待排序数据中的最值了
比较排序也叫冒泡排序,就是把相邻的数据比较交换,因为其把小的数字从后面往前慢慢移动,感觉象水泡上升一样,所以叫冒泡排序法.
  如过你还没理解,留言~
[fly]真正的天才更懂得刻苦学习![/fly]
下面是引用jeffery5752于2005-09-16 11:51发表的:
选择排序是一种比较优化的排序,它定义的k意义在于表示一次循环后找到的最小(大)值的位置,然后让第i个(第几次循环就是第几个)植交换,这样在第一轮循环中就把最小(大)的值换到了最前面,如果只用i,j 的话,就没有办法找出待排序数据中的最值了
比较排序也叫冒泡排序,就是把相邻的数据比较交换,因为其把小的数字从后面往前慢慢移动,感觉象水泡上升一样,所以叫冒泡排序法.
  如过你还没理解,留言~
论坛里【i】是有功能的,表示字体斜体,所以呢,找个东西代替,或者不用i 了,用别的字母吧~~~
  :)
[fly]真正的天才更懂得刻苦学习![/fly]
返回列表