新人新气象,我又来了,C语言实现选择排序。很基础的东西,原理什么的就不扯了。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. #define LENGTH 20
  6.  
  7. const WORD FORE_BLUE = FOREGROUND_BLUE|FOREGROUND_INTENSITY;
  8. const WORD FORE_GREEN = FOREGROUND_GREEN|FOREGROUND_INTENSITY;
  9. const WORD FORE_RED = FOREGROUND_RED|FOREGROUND_INTENSITY;
  10. const WORD FORE_WHITE = FOREGROUND_RED | FOREGROUND_GREEN|FOREGROUND_BLUE;
  11.  
  12. void sort_selection(int *a);
  13. void display(int *a);
  14. void details(int *a);
  15. void setcolor(HANDLE outhandle,int *a,int index,WORD rgb);
  16.  
  17. void display(int *a)
  18. {
  19. int i;
  20. for (i=;i<LENGTH;i++)
  21. {
  22. printf("%2d ",a[i]);
  23. }
  24. printf("\n");
  25. }
  26.  
  27. void sort_selection(int *a)
  28. {
  29. int i,j,min,temp;
  30. for (i=;i<LENGTH-;i++)
  31. {
  32. min=i;
  33. for (j=i+;j<=LENGTH-;j++)
  34. {
  35. if (a[j]<a[min])
  36. min=j;
  37. }
  38. temp=a[i];
  39. a[i]=a[min];
  40. a[min]=temp;
  41. }
  42. }
  43. int main()
  44. {
  45. int array[LENGTH]={,,,,,,,,,,
  46. ,,,,,,,,,};
  47. int array2[LENGTH]={,,,,,,,,,,
  48. ,,,,,,,,,};
  49. printf("Before sort:\n");
  50. display(array);
  51. sort_selection(array);
  52. printf("Success sort:\n");
  53. display(array);
  54. printf("Press to display details:\n");
  55. getch();
  56. details(array2);
  57. getch();
  58. return ;
  59. }
  60. void setcolor(HANDLE outhandle,int *a,int index,WORD rgb)
  61. {
  62. if (index<||index>LENGTH-)
  63. {
  64. return;
  65. }
  66. COORD xy={,};
  67. xy.Y=;
  68. xy.X=index*;
  69. SetConsoleTextAttribute(outhandle, rgb);
  70. SetConsoleCursorPosition(outhandle,xy);
  71. printf(" ");
  72. SetConsoleCursorPosition(outhandle,xy);
  73. printf("%2d",a[index]);
  74. }
  75. void details(int *a)
  76. {
  77. int i,j,min,temp;
  78. HANDLE outhandle=GetStdHandle(STD_OUTPUT_HANDLE);
  79. display(a);
  80. for (i=;i<LENGTH-;i++)
  81. {
  82. min=i;
  83. setcolor(outhandle,a,min,FORE_BLUE);
  84. Sleep();
  85. for (j=i+;j<=LENGTH-;j++)
  86. {
  87. setcolor(outhandle,a,j,FORE_RED);
  88. Sleep();
  89. if (a[j]<a[min])
  90. {
  91. setcolor(outhandle,a,min,FORE_WHITE);
  92. min=j;
  93. setcolor(outhandle,a,min,FORE_BLUE);
  94. Sleep();
  95. }
  96. else
  97. {
  98. setcolor(outhandle,a,j,FORE_WHITE);
  99. Sleep();
  100. }
  101. }
  102. temp=a[i];
  103. a[i]=a[min];
  104. a[min]=temp;
  105. setcolor(outhandle,a,min,FORE_WHITE);
  106. setcolor(outhandle,a,i,FORE_GREEN);
  107. Sleep();
  108. }
  109. setcolor(outhandle,a,LENGTH-,FORE_GREEN);
  110. CloseHandle(outhandle);
  111. }

点击显示伪代码

C语言实现选择排序算法的更多相关文章

  1. C语言利用指针排序与选择排序算法

    //读入字符串,并排序字符串 #include <stdio.h> #include <string.h> #define SIZE 81 #define LIM 20 #de ...

  2. C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置

    #include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7, ...

  3. 《算法4》2.1 - 选择排序算法(Selection Sort), Python实现

    选择排序算法(Selection Sort)是排序算法的一种初级算法.虽然比较简单,但是基础,理解了有助于后面学习更高深算法,勿以勿小而不为. 排序算法的语言描述: 给定一组物体,根据他们的某种可量化 ...

  4. CPrimerPlus第十一章中的“选择排序算法”学习

    C Primer Plus第十一章字符串排序程序11.25中,涉及到“选择排序算法”,这也是找工作笔试或面试可能会遇到的题目,下面谈谈自己的理解. 举个例子:对数组num[5]={3,5,2,1,4} ...

  5. python选择排序算法总结

    选择排序算法: a=[6,5,4,3,2,1] 算法思路: 第一步:在列表的第一个位置存放此队列的最小值 声明一个变量min_index等于列表的第一个坐标值0 从第一个位置0坐标开始,和它后边所有的 ...

  6. JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

  7. java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述

    算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...

  8. 基于Java实现的选择排序算法

    选择排序和冒泡排序同样是基础排序算法,现在也做个学习积累. 简述 选择排序算法较为稳定,基本上都是O(n2)的时间复杂度,规模越小排序越快,不需要占用额外空间.其实选择排序原理很简单,就是在未排序序列 ...

  9. 冒泡排序算法和简单选择排序算法的js实现

    之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ...

随机推荐

  1. 文件复制(shutil)

    import shutil #拷贝整个目录树 shutil.copytree('d:\\aaa','e:\\aaa') #目标文件夹(e:\aaa)必须不存在 shutil.rmtree('e:\\a ...

  2. 浏览器跨域访问WebApi

      webapi地址:wapapi.ebcbuy.com web地址:wapweb.ebcbuy.com   在默认情况下这两个域名属于两个不同的域,他们之间的交互存在跨域的问题,但因为他们都同属于一 ...

  3. December 09th 2016 Week 50th Friday

    In books lies the soul of the whole past time. 书中有所有先贤的全部灵魂. I must know that if I run my business i ...

  4. HTTP协议图--HTTP 响应状态码(重点分析)

    1. 状态码概述 HTTP 状态码负责表示客户端 HTTP 请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作. HTTP 状态码如 200 OK ,以 3 位数字和原因短语组成.数字中 ...

  5. 小白学CMD下运行MySQL

    将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) ...

  6. 8、RabbitMQ-消息的确认机制(生产者)

    RabbitMQ 之消息确认机制(事务+Confirm) https://blog.csdn.net/u013256816/article/details/55515234 概述: 在 Rabbitm ...

  7. 【转】 Tomcat+redis+nginx配置

    为客户开发的一个绩效系统,采用了java web的开发方式,使用了一些spring mvc, mybatis之类的框架.相比于oracle ebs的二次开发,这种开发更加灵活,虽然和ebs集成的时候遇 ...

  8. java 常用类2

    1.1 日期时间类 时间戳(timestamp):距离特定时间的时间间隔. 计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms). 计算机中时间2019-04- ...

  9. 【luogu P2827 蚯蚓】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2827 35分:暴力sortO(mnlogn). 80分:考虑到每次不好维护不被切的点+q,正难则反.改成维护 ...

  10. NSOJ 4621 posters (离散化+线段树)

    posters 时间限制: 1000ms 内存限制: 128000KB 64位整型:      Java 类名: 上一题 提交 运行结果 统计 讨论版 下一题 题目描述 The citizens of ...