码迷,mamicode.com
首页 > 编程语言 > 详细

C语言实现冒泡排序算法

时间:2018-05-25 01:49:16      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:ext   array   ++   let   图片   src   win   数组   函数   

新人新气象,又一个学习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=0;i<LENGTH;i++)
{
printf("%2d ",a[i]);
}
printf("\n");
}

void sort_bubble(int *a)
{
int i,j,k,temp;
for (i=0;i<LENGTH-1;i++)
{
k=0;
for (j=0;j<LENGTH-i-1;j++)
{
if (a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
k++;
}

}
if (k==0)
{
break;
}
}
}
int main()
{
int array[LENGTH]={20,62,30,50,80,37,40,22,55,44,
77,85,18,44,90,73,26,10,46,64};
int array2[LENGTH]={20,62,30,50,80,37,40,22,55,44,
77,85,18,44,90,73,26,10,46,64};
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 0;
}

void details(int *a)
{
int i,j,k,temp;
HANDLE outhandle=GetStdHandle(STD_OUTPUT_HANDLE);
COORD xy={0,0};
xy.Y=5;
display(a);
for (i=0;i<LENGTH-1;i++)
{
k=0;
for (j=0;j<LENGTH-i-1;j++)
{
Sleep(100);
xy.X=j*3;
SetConsoleTextAttribute(outhandle, FORE_RED);
SetConsoleCursorPosition(outhandle,xy);
printf("%2d %2d",a[j],a[j+1]);
if (a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
Sleep(100);
xy.X=j*3;
SetConsoleCursorPosition(outhandle,xy);
printf(" ");
SetConsoleCursorPosition(outhandle,xy);
printf("%2d %2d",a[j],a[j+1]);
k++;
}
Sleep(100);
xy.X=j*3;
SetConsoleCursorPosition(outhandle,xy);
SetConsoleTextAttribute(outhandle, FORE_WHITE);
printf("%2d %2d",a[j],a[j+1]);
}
xy.X=3*(LENGTH-1-i);
SetConsoleCursorPosition(outhandle,xy);
SetConsoleTextAttribute(outhandle, FORE_GREEN);
printf("%2d",a[LENGTH-i-1]);
if (k==0)
{
break;
}
}
xy.X=0;
xy.Y=5;
SetConsoleCursorPosition(outhandle,xy);
SetConsoleTextAttribute(outhandle, FORE_GREEN);
display(a);
CloseHandle(outhandle);
}

技术分享图片

C语言实现冒泡排序算法

标签:ext   array   ++   let   图片   src   win   数组   函数   

原文地址:https://www.cnblogs.com/lisg001/p/9085922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!