代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C
】
排序算法
作者:
mummy108
/ 发布于
2013/3/18
/
726
排序算法
#include <stdio.h> #include <stdlib.h> //#include <window.h> #include <Time.h> //利用time_t记录 使用time(&time_start)可以获取精确到秒 #define BUBBLE_QUICK 1 //0为快速 1为冒泡 #define NUMBER_COUNT 30000 //改变该数字改变输入的变量数量 #define NUMER_PER_LINE 8 //改变该数字改变每行显示的数字数量 #define MAKE_SURE 0 //设置为0 不显示排序具体的数字 #define NUM_KEYIN_ENABLE 0 //设置为0 输入为随机数 设置为1 手动输入数据 #define DEBUG_LOOP_ENABLE 0 //设置为1 显示递归的中间变量 设置为0关闭中间变量显示 void printf_numbers(int* _display, int _count); void sort_bubble(int* _value); void sort_quick(int* _value, int _count); int main(int argc,char* argv) { int value[NUMBER_COUNT]; int i; time_t time1,time2; for(i = 0;i < NUMBER_COUNT;i++) { #if NUM_KEYIN_ENABLE printf("Please Enter the number of value[%d] :",i); scanf("%d", &value[i]); printf("\n"); #else value[i] = rand(); //随机数范围 0-32767 #endif } // value[0] = 12000; //定义第一个数字..... 实际操作操作中key需要另外定义 printf("\nBefore Sort"); #if MAKE_SURE printf_numbers(value,NUMBER_COUNT); #endif time(&time1); #if BUBBLE_QUICK sort_bubble(value); #else sort_quick(value,NUMBER_COUNT); #endif time(&time2); printf("\nTime Used %d s",time2-time1); printf("\nAfter Sort"); #if MAKE_SURE printf_numbers(value,NUMBER_COUNT); #endif return 0; } void sort_bubble(int* _value)//冒泡排序 { int i,j,k; for(i = 0;i<NUMBER_COUNT;i++) { for(j = i;j<NUMBER_COUNT;j++) { if(_value[i]>_value[j]) //冒泡 { k = _value[i]; _value[i] = _value[j]; _value[j] = k; } } } } void sort_quick(int* _value, int _count) //随机快速排序 { int i = 0,j = _count,key = 0,temp; if(_count <= 1) //用于终止递归 return; while(i < j) { while(i < j) //小数左移 { if(_value[key] > _value[j]) { temp = _value[key]; _value[key] = _value[j]; _value[j] = temp; key = j; break; } j--; } while(i < j) //大数右移 { if(_value[key] < _value[i]) { temp = _value[key]; _value[key] = _value[i]; _value[i] = temp; key = i; break; } i++; } } #if DEBUG_LOOP_ENABLE printf("sorted\n"); printf_numbers(_value,_count); printf("to be sort\n"); printf_numbers(_value,key); printf_numbers(&_value[key+1],_count-key-1); #endif sort_quick(_value,key); //左边递归 sort_quick(&_value[key+1],_count-key-1);//右边递归 return; } void printf_numbers(int* _display, int _count) //加入第二参数 方便显示中间数组 { int i; for(i = 0; i<_count;i++) { if((i%_count)==0) printf("\n"); //控制换行 printf("%5d\t",_display[i]); } printf("\n"); }
试试其它关键字
排序算法
同语言下
.
获取手机通讯录 iOS去除数字以外的所有字符
.
异步加载音乐等资源
.
交通罚单管理系统
.
freemark实现,简单的替换
.
计算斐波那契数列
.
base64解码 包括解码长度
.
图像显示
.
冒泡排序
.
输入十进制数,输出指定进制
.
链式栈
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
mummy108
贡献的其它代码
(
1
)
.
排序算法
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3