即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

排序之三:极简选择排序(C语言实现)

编程语言 TECH_PRO 34℃ 0评论

简单选择排序的算法实现思想是:第一趟,从n个记录当真找出 关键字最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1个记录中找出关键字最小的记录与第二个记录交换;依次类推,直到整个序列按照关键字有序。

下面实现一个简单的选择排序函数(按照逐渐递增方式进行排序):

/* 选择排序算法的实现
 *  array[] : 待排序的数组
 *  length  : 待排序的数组的长度
 */
void selection_sort(int array[], int length)
{
 int i, j, m;
 int temp; // 用于存放临时待排序的元素值

 for(i = 0; i < length -1; i++)
 {
  m = i;
  for(j = i + 1; j < length; j++)
  {
   if(array[j] < array[m])
    m = j;
  }
  if(m != i)
  {
   temp = array[i];
   array[i] = array[m];
   array[m] = temp;
  }
 }
}

测试程序实现如下:

/* 程序的入口函数 */
int main()
{
 int a[ARRAY_LENGTH];
 int i;

 /* 输入10个整形元素 */ 
 printf("Input %d numbers : \n", ARRAY_LENGTH);
 for(i = 0; i < ARRAY_LENGTH; i++)
 {
  scanf("%d", &a[i]);
 }

 printf("****************************************************************\n");

 /* 把排序前元素都打印出来 */
 printf("The elements before sort is : \n");
 for(i = 0; i< ARRAY_LENGTH; i++)
 {
  printf("%d ", a[i]);
 }
 printf("\n");

 printf("****************************************************************\n");

 /* 对元素进行有小到大的顺序进行排序 */
 selection_sort(a, ARRAY_LENGTH);

 /* 把排序后元素都打印出来 */
 printf("The elements after sort is : \n");
 for(i = 0; i < ARRAY_LENGTH; i++)
 {
  printf("%d ", a[i]);
 }
 printf("\n");

 return 0; 
}

编译运行结果如下:







转载请注明:CodingBlog » 排序之三:极简选择排序(C语言实现)

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情