c语言中起泡法和选择法有什么不同,急!,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/24 05:09:27
请分别解释然后比较

 

  两者最大的区别在于算法本身。


  起泡法(冒泡法)是相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可能作相对位置的调整。可以进行升序或降序排序。


  选择法是每趟是选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。

      一、冒泡法(起泡法)

  1、算法示例:用起泡法对10个整数按升序排序。

  2、算法分析:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。

  3、算法原码

   #include <stdio.h>
  int main()
  {
  int a[10],i,j,t;
  printf("Please input 10 numbers: ");
  /*输入源数据*/
  for(i=0;i<10;i++)
  scanf("%d",&a[i]);
  /*排序*/
  for(j=0;j<9;j++)          /*外循环控制排序趟数,n个数排n-1趟*/
  for(i=0;i<9-j;i++)    /*内循环每趟比较的次数,第j趟比较n-j次*/
  if(a[i]>a[i+1])    /*相邻元素比较,逆