站点图标

C 选择排序

2018-10-27折腾记录Develop / 算法 / C
本文最后更新于 607 天前,文中所描述的信息可能已发生改变

就按上一篇的格式写吧,其实还有很多 C 笔记可以水几篇文章,偷懒中。。

思想和举例

选择排序同样是通过遍历的方式进行比较排序的,只不过不再是通过不断交换相邻的两个数字,而是遍历搜索最大或最小值然后将最大值或最小值与最后方或者最前方的值进行交换,以此类推直到最后完成排序,具体排序的过程可以查看维基百科,偷懒。。

看什么呢,没有举例~( ̄ ▽  ̄)~

算法总结与实现

不用介绍了直接上算法吧( ̄ ▽  ̄)”


_55
#include <stdio.h>
_55
#define N 10 //定义要排序的数组长度
_55
//选择排序控制Demo
_55
//选择排序结果和方式
_55
//结果:输出排序的数组
_55
//方式:遍历比较
_55
//本例排序从低到高
_55
int main(int argc, char const *argv[])
_55
{
_55
int nums[N], temp, j, i;
_55
printf ("请输入要进行排序的数列:\n");
_55
for (int u = 0; u < 10; u++) //循环输入数组
_55
{
_55
scanf ("%d", &nums[u]);
_55
}
_55
_55
//
_55
//升序排列
_55
//
_55
printf ("降序排列:\n");
_55
for (i = 0; i < N; i++) //外层循环,控制循环轮数
_55
{
_55
int m = i;
_55
for (j = i + 1; j < N; j++) //内层循环,控制遍历数组,寻找最小的数,并进行交换指针
_55
{
_55
if (nums[m] > nums[j]) //判断附近两个数谁最小
_55
{
_55
m = j; //标记最小的数
_55
}
_55
}
_55
temp = nums[m]; //交换最小的数到前方
_55
nums[m] = nums[i];
_55
nums[i] = temp;
_55
}
_55
_55
//输出排序好是数组
_55
int u;
_55
for (u = 0; u < N - 1; u++)
_55
{
_55
printf ("%d ", nums[u]);
_55
}
_55
printf ("%d\n",nums[u]);
_55
_55
//
_55
//降序排列
_55
//
_55
//输出排序好是数组
_55
for (u = N - 1; u > 0; u--)
_55
{
_55
printf ("%d ", nums[u]);
_55
}
_55
printf ("%d\n",nums[u]);
_55
_55
return 0;
_55
}

对了,这次采用了循环输入,不用再写很长的输入了ヾ(≧▽≦*)o

C 选择排序

https://blog.ixk.me/post/c-select-sort
  • 许可协议

    BY-NC-SA

  • 发布于

    2018-10-27

  • 本文作者

    Otstar Lin

转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!

VSCode配置Java调试环境[Windows]C 冒泡排序