排序—选择法

来自软件实验室
跳转至: 导航搜索

有几个值得学习的地方:

1.数组的定义

2.循环的使用

3.中间变量的使用

  1. define N 5         /*这样定义便于下面的引用*/
  2. include <stdio.h>

void main() {

  int i,j,t,count;
  int a[N];
  for (i=0;i<N;i++)
  scanf ("%d",&a[i]);
  for (i=0;i<N-1;i++)      /*每一遍进行N-1次比较*/
  for (j=i+1;j<N;j++)                   
  if(a[i]<a[j])
  {
  t=a[i];
  a[i]=a[j];
  a[j]=t;                                           /*利用中间变量t来实现a[i]与a[j]的交换*/
  }
  count++;                                     /*利用count来记录循环次数*/
  printf ("\n");
  for (i=0;i<N;i++)
  printf ("%-6d",a[i]);
  printf ("\n");
  printf ("循环次数:%d",count);
  printf ("\n");

}

执行结果如下:

gaohan@gaohan-Lenovo-G50-70:~/project$ ./eg3 14 12 -98 0 5

14 12 5 0 -98

循环次数:32769

疑问:有没有效率更高的写法,这样循环次数有点多,效率太低