新人新气象,又一个学习C的新人来了。

冒泡排序,基础中的基础,原理不啰嗦了。

代码中display()为数组展示函数,sort_bubble()为直接实现排序,details()为带动画展示。

 #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_bubble(int *a);
void display(int *a);
void details(int *a); void display(int *a)
{
int i;
for (i=;i<LENGTH;i++)
{
printf("%2d ",a[i]);
}
printf("\n");
} void sort_bubble(int *a)
{
int i,j,k,temp;
for (i=;i<LENGTH-;i++)
{
k=;
for (j=;j<LENGTH-i-;j++)
{
if (a[j]>a[j+])
{
temp=a[j];
a[j]=a[j+];
a[j+]=temp;
k++;
} }
if (k==)
{
break;
}
}
}
int main()
{
int array[LENGTH]={,,,,,,,,,,
,,,,,,,,,};
int array2[LENGTH]={,,,,,,,,,,
,,,,,,,,,};
printf("Before sort:\n");
display(array);
sort_bubble(array);
printf("Success sort:\n");
display(array);
printf("Press to display details:\n");
getch();
details(array2);
getch();
return ;
} void details(int *a)
{
int i,j,k,temp;
HANDLE outhandle=GetStdHandle(STD_OUTPUT_HANDLE);
COORD xy={,};
xy.Y=;
display(a);
for (i=;i<LENGTH-;i++)
{
k=;
for (j=;j<LENGTH-i-;j++)
{
Sleep();
xy.X=j*;
SetConsoleTextAttribute(outhandle, FORE_RED);
SetConsoleCursorPosition(outhandle,xy);
printf("%2d %2d",a[j],a[j+]);
if (a[j]>a[j+])
{
temp=a[j];
a[j]=a[j+];
a[j+]=temp;
Sleep();
xy.X=j*;
SetConsoleCursorPosition(outhandle,xy);
printf(" ");
SetConsoleCursorPosition(outhandle,xy);
printf("%2d %2d",a[j],a[j+]);
k++;
}
Sleep();
xy.X=j*;
SetConsoleCursorPosition(outhandle,xy);
SetConsoleTextAttribute(outhandle, FORE_WHITE);
printf("%2d %2d",a[j],a[j+]);
}
xy.X=*(LENGTH--i);
SetConsoleCursorPosition(outhandle,xy);
SetConsoleTextAttribute(outhandle, FORE_GREEN);
printf("%2d",a[LENGTH-i-]);
if (k==)
{
break;
}
}
xy.X=;
xy.Y=;
SetConsoleCursorPosition(outhandle,xy);
SetConsoleTextAttribute(outhandle, FORE_GREEN);
display(a);
CloseHandle(outhandle);
}

点击显示伪代码

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

  1. 【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  2. python开发学习-day05(正则深入、冒泡排序算法、自定义模块、常用标准模块)

    s12-20160130-day05 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  3. python算法与数据结构-冒泡排序算法(32)

    一.冒泡排序介绍 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要 ...

  4. 冒泡排序算法(C#、Java、Python、JavaScript、C、C++实现)

    一.介绍 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小.首字母从Z到A)错误就把他们交换过来. 走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排 ...

  5. C#冒泡排序算法

    用了两种形式的数据,一个是泛型List,一个是数据int[].记录一下,作为自己学习过程中的笔记. using System; using System.Collections.Generic; us ...

  6. c#-冒泡排序-算法

    冒泡排序(Bubble Sort) 冒泡排序算法的运作如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后 ...

  7. 10个经典的C语言面试基础算法及代码

    10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...

  8. java冒泡排序算法

    /** * 冒泡排序算法:每次 * @author shaobn * @description 每次都会确定一个最大的值 即固定了,所以会每次-i; */ public class Test1 { p ...

  9. 快速、冒泡排序算法(PHP版)

    1.冒泡排序算法改进: 方法一: function bubbleSort($arr){//$arr(1...n)是待排序的文件,采用自下向上扫描,对$arr做冒泡排序 $bFlag = true; / ...

随机推荐

  1. scrollview的总结

    今天主要是学习了cocos2dx的scrollview的内容,把简单的菜单滑动表现做出来了.像很多游戏的下方有一槽功能按钮,角色.背包.技能.帮助等,当宽度不足以全部显示出来的时候,隐藏一部分,以滑动 ...

  2. g++: error: unrecognized command line option ‘-std=C++11’

    一个小程序,在编译的时候出错,原来使用的编译命令是 g++ -std=C++11 array.cpp -o array.exe g++: error: unrecognized command lin ...

  3. Beta版本 为什么程序员总是分不清万圣节和圣诞节?因为 Oct 31 == Dec 25。

    Beta版本 软件的测试版本,经常在各类著名软件中的前期发布版本的后缀中可见,包括大名鼎鼎的windows系统,这个阶段的版本一直加入一些新的功能. 软件测试可分为alpha测试.beta测试和联合测 ...

  4. ZT 怎么样才算熟悉设计模式? [问题点数:40分,结帖人jiaoyun007]

    http://bbs.csdn.net/topics/390448668?page=1#post-394406161 近日面试,因为个人简历里有“熟悉设计模式”这句话,面试官边侃侃发问了:什么是装饰模 ...

  5. MongoDB限制记录数

    MongoDB limit()方法 要限制 MongoDB 中返回的记录数,需要使用limit()方法. 该方法接受一个数字类型参数,它是要显示的文档数. 语法 limit()方法的基本语法如下: & ...

  6. 在thinkphp5.0中调用ajax时, 返回的JSON 格式数据在html前台不能用时

    在thinkphp5.0中调用ajax时,如果控制器返回的数据为json格式,视图层接收到返回值即为json格式的数据,此时应该把 JSON 文本转换为 JavaScript 对象,方便调用.具体代码 ...

  7. Java 内部类综述

    转载自:https://blog.csdn.net/justloveyou_/article/details/53245561

  8. Java语言实现简单的登陆注册

    1.登录注册 1.1数据库设计 create table USER_INFO( id number not null, name ) not null, pass ) )insert into USE ...

  9. 轻量ORM-SqlRepoEx (七)AspNetCore应用

    ORM-SqlRepoEx 是 .Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵 ...

  10. Oracle子查询之高级子查询

    Oracle 高级子查询 高级子查询相对于简单子查询来说,返回的数据行不再是一列,而是多列数据. 1,多列子查询 主查询与子查询返回的多个列进行比较 查询与141号或174号员工的manager_id ...