02
2020
04

编码实现直接选择排序

选择排序实现代码如下:


#include <stdio.h>

 

int main()

{

 int i,j,t;

 int array[10]={2,7,1,8,5,9,3,4,0,6};

 printf("\nDisplay this array:\n");

 for(i=0;i<10;i++)

 {

  printf("%d ",array[i]);

 }

 printf("\n");

 for(i=1;i<=9;i++)

 {

  int t = i-1;

  for(j=i;j<10;j++)

  {

   if(array[j]<array[t])

   {

    t=j;

   }

  }

  if(t!=(i-1))

  {

   int temp = 0;

   temp=array[i-1];

   array[i-1]=array[t];

   array[t]=temp;

  }

 }

 printf("After sorting,this array is:\n");

 for(i=0;i<10;i++)

 {

  printf("%d ",array[i]);

 }

 printf("\n");

 return 0;

}


注:对比冒泡排序和选择排序之间的区别


区别在于:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的元素。而选择排序算法的改进在于:先并不急于调换位置,先从A[1]开始逐个检查,看哪个数最小就记下该数所在的位置P,等一躺扫描完毕,再把A[P]和A[1]对调,这时A[1]到A[10]中最小的数据就换到了最前面的位置


所以,选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次。比较的次数是一样的。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。