C语言实现选择排序算法
新人新气象,我又来了,C语言实现选择排序。很基础的东西,原理什么的就不扯了。
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- #define LENGTH 20
- const WORD FORE_BLUE = FOREGROUND_BLUE|FOREGROUND_INTENSITY;
- const WORD FORE_GREEN = FOREGROUND_GREEN|FOREGROUND_INTENSITY;
- const WORD FORE_RED = FOREGROUND_RED|FOREGROUND_INTENSITY;
- const WORD FORE_WHITE = FOREGROUND_RED | FOREGROUND_GREEN|FOREGROUND_BLUE;
- void sort_selection(int *a);
- void display(int *a);
- void details(int *a);
- void setcolor(HANDLE outhandle,int *a,int index,WORD rgb);
- void display(int *a)
- {
- int i;
- for (i=;i<LENGTH;i++)
- {
- printf("%2d ",a[i]);
- }
- printf("\n");
- }
- void sort_selection(int *a)
- {
- int i,j,min,temp;
- for (i=;i<LENGTH-;i++)
- {
- min=i;
- for (j=i+;j<=LENGTH-;j++)
- {
- if (a[j]<a[min])
- min=j;
- }
- temp=a[i];
- a[i]=a[min];
- a[min]=temp;
- }
- }
- int main()
- {
- int array[LENGTH]={,,,,,,,,,,
- ,,,,,,,,,};
- int array2[LENGTH]={,,,,,,,,,,
- ,,,,,,,,,};
- printf("Before sort:\n");
- display(array);
- sort_selection(array);
- printf("Success sort:\n");
- display(array);
- printf("Press to display details:\n");
- getch();
- details(array2);
- getch();
- return ;
- }
- void setcolor(HANDLE outhandle,int *a,int index,WORD rgb)
- {
- if (index<||index>LENGTH-)
- {
- return;
- }
- COORD xy={,};
- xy.Y=;
- xy.X=index*;
- SetConsoleTextAttribute(outhandle, rgb);
- SetConsoleCursorPosition(outhandle,xy);
- printf(" ");
- SetConsoleCursorPosition(outhandle,xy);
- printf("%2d",a[index]);
- }
- void details(int *a)
- {
- int i,j,min,temp;
- HANDLE outhandle=GetStdHandle(STD_OUTPUT_HANDLE);
- display(a);
- for (i=;i<LENGTH-;i++)
- {
- min=i;
- setcolor(outhandle,a,min,FORE_BLUE);
- Sleep();
- for (j=i+;j<=LENGTH-;j++)
- {
- setcolor(outhandle,a,j,FORE_RED);
- Sleep();
- if (a[j]<a[min])
- {
- setcolor(outhandle,a,min,FORE_WHITE);
- min=j;
- setcolor(outhandle,a,min,FORE_BLUE);
- Sleep();
- }
- else
- {
- setcolor(outhandle,a,j,FORE_WHITE);
- Sleep();
- }
- }
- temp=a[i];
- a[i]=a[min];
- a[min]=temp;
- setcolor(outhandle,a,min,FORE_WHITE);
- setcolor(outhandle,a,i,FORE_GREEN);
- Sleep();
- }
- setcolor(outhandle,a,LENGTH-,FORE_GREEN);
- CloseHandle(outhandle);
- }
点击显示伪代码
C语言实现选择排序算法的更多相关文章
- C语言利用指针排序与选择排序算法
//读入字符串,并排序字符串 #include <stdio.h> #include <string.h> #define SIZE 81 #define LIM 20 #de ...
- C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
#include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7, ...
- 《算法4》2.1 - 选择排序算法(Selection Sort), Python实现
选择排序算法(Selection Sort)是排序算法的一种初级算法.虽然比较简单,但是基础,理解了有助于后面学习更高深算法,勿以勿小而不为. 排序算法的语言描述: 给定一组物体,根据他们的某种可量化 ...
- CPrimerPlus第十一章中的“选择排序算法”学习
C Primer Plus第十一章字符串排序程序11.25中,涉及到“选择排序算法”,这也是找工作笔试或面试可能会遇到的题目,下面谈谈自己的理解. 举个例子:对数组num[5]={3,5,2,1,4} ...
- python选择排序算法总结
选择排序算法: a=[6,5,4,3,2,1] 算法思路: 第一步:在列表的第一个位置存放此队列的最小值 声明一个变量min_index等于列表的第一个坐标值0 从第一个位置0坐标开始,和它后边所有的 ...
- JAVA简单选择排序算法原理及实现
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则.通俗点说,就是计算机解题的过程.在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法.前者是推理实现的算法,后者是操作实现的算法. ...
- 基于Java实现的选择排序算法
选择排序和冒泡排序同样是基础排序算法,现在也做个学习积累. 简述 选择排序算法较为稳定,基本上都是O(n2)的时间复杂度,规模越小排序越快,不需要占用额外空间.其实选择排序原理很简单,就是在未排序序列 ...
- 冒泡排序算法和简单选择排序算法的js实现
之前已经介绍过冒泡排序算法和简单选择排序算法和原理,现在有Js实现. 冒泡排序算法 let dat=[5, 8, 10, 3, 2, 18, 17, 9]; function bubbleSort(d ...
随机推荐
- 文件复制(shutil)
import shutil #拷贝整个目录树 shutil.copytree('d:\\aaa','e:\\aaa') #目标文件夹(e:\aaa)必须不存在 shutil.rmtree('e:\\a ...
- 浏览器跨域访问WebApi
webapi地址:wapapi.ebcbuy.com web地址:wapweb.ebcbuy.com 在默认情况下这两个域名属于两个不同的域,他们之间的交互存在跨域的问题,但因为他们都同属于一 ...
- 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 ...
- HTTP协议图--HTTP 响应状态码(重点分析)
1. 状态码概述 HTTP 状态码负责表示客户端 HTTP 请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作. HTTP 状态码如 200 OK ,以 3 位数字和原因短语组成.数字中 ...
- 小白学CMD下运行MySQL
将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) ...
- 8、RabbitMQ-消息的确认机制(生产者)
RabbitMQ 之消息确认机制(事务+Confirm) https://blog.csdn.net/u013256816/article/details/55515234 概述: 在 Rabbitm ...
- 【转】 Tomcat+redis+nginx配置
为客户开发的一个绩效系统,采用了java web的开发方式,使用了一些spring mvc, mybatis之类的框架.相比于oracle ebs的二次开发,这种开发更加灵活,虽然和ebs集成的时候遇 ...
- java 常用类2
1.1 日期时间类 时间戳(timestamp):距离特定时间的时间间隔. 计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms). 计算机中时间2019-04- ...
- 【luogu P2827 蚯蚓】 题解
题目链接:https://www.luogu.org/problemnew/show/P2827 35分:暴力sortO(mnlogn). 80分:考虑到每次不好维护不被切的点+q,正难则反.改成维护 ...
- NSOJ 4621 posters (离散化+线段树)
posters 时间限制: 1000ms 内存限制: 128000KB 64位整型: Java 类名: 上一题 提交 运行结果 统计 讨论版 下一题 题目描述 The citizens of ...