新人新气象,我又来了,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语言实现选择排序算法的更多相关文章

  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. DZ拿shell总结

    今天碰到一个dz的站,好久没拿了 ,拿下shell觉得应该总结一下 Uc_server默认密码 其实有了UC_SERVER就是有了网站的全部权限了,有了UC_SERVER你可以重置管理员密码 可以进后 ...

  2. 关于数据库SQL优化

    1.数据库访问优化   要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件 ...

  3. CSS加载性能优化

    将首屏页面要用到的CSS文件,放在页面头部加载,其他模块的CSS可以使用异步加载:loadCSS 和 Preload. 关于preload,推进2篇文章给大家看下: 1.通过rel="pre ...

  4. Redis命令、数据结构场景、配置文件总结

    本文大纲 一.常用数据类型简介二.redis操作命令三.redis配置文件详解四.redis数据类型使用场景 一.常用数据类型简介 redis常用五种数据类型:string,hash,list,set ...

  5. Sublime Text 3中文乱码问题解决

    Sublime Text 3是我MacBook Pro最喜欢的代码编辑器,没有之一,因为她的性感高亮代码配色,更因为它的小巧,但是它默认不支持GBK的编码格式,因此打开GBK的代码文件,如果里面有中文 ...

  6. 【jQuery】deferred对象了解

    deferred对象就是jQuery的回调函数解决方案,在英语中,defer的意思是"延迟",所以deferred对象的含义就是"延迟"到未来某个点再执行. 它 ...

  7. 2、Android-UI(RecyclerView)

    2.6.滚动控件-RecylerView ListView虽然使用的效果很好但是也是有缺点的 不使用一些技巧来提升它的运行效率,性能就非常差 扩展性也不是很好 只能实现数据的纵向滚动效果 实现横向滚动 ...

  8. Win32多线程之核心对象

    CreateThread()传回两个值,用以识别一个新的线程.第一个值是个Handle,  这也是CreateThread()的返回值,大部分与线程有关的API函数都需要它.第二个值是由lpThrea ...

  9. AttributeError: 'module' object has no attribute get'

    最近在写python requests相关内容易,突然报错AttributeError: 'module' object has no attribute 'get'" 脚本肯定没问题 怎么 ...

  10. 【Step By Step】将Dotnet Core部署到Docker上

    本教程的前提是,你已经在Linux服务器上已经成功的安装了Docker,我会大概介绍在此过程中用到的Docker命令,并不会介绍所有的Docker命令(因为我也不会). 一.在Docker中运行Dot ...