Blog

It's a Wonderful Life

选择排序算法

2016-05-04 18:25 Posted in Learn with C

选择排序算法是另一种比较常用的排序算法,它比冒泡排序法的效率更高。 因为冒泡排序法每次内层循环都要进行N-1次比较置换,而排序算法内层循环一次性找出最小值,记录下标,然后再与当前参与循环的数组元素进行置换。

以下是选择排序法的代码实现。

#include<stdio.h>
#define NUM 10

int main(void) {

 int num[NUM], i, j, k, temp;
 printf("Please input %d numbers.\n", NUM);

  //从用户处接收十个数字
 for (i = 0; i < NUM; i++) {
  scanf_s("%d", &num[i]);
 }

  for (i = 0; i < NUM - 1; i++) {
  k = i;
  for (j = i + 1; j < NUM; j++) {
   if (num[k] > num[j]) {
    k = j;
   }
  }
  if (k != i) {
   temp = num[i];
   num[i] = num[k];
   num[k] = temp;
  }

  }

  //输出排序后的数组
 for (i = 0; i < NUM; i++) {
  printf("%d ", num[i]);
 }
 printf("\n");

}