您的位置:首页 > 编程语言 > Java开发

10种排序法

2015-09-19 19:27 477 查看
排序算法有很多,所以在特定情景中使用哪一种算法很重要。为了选择合适的算法,可以按照建议的顺序考虑以下标准:

(1)执行时间

(2)存储空间

(3)编程工作

对于数据量较小的情形,(1)(2)差别不大,主要考虑(3);而对于数据量大的,(1)为首要。

主要排序法有:

一、冒泡(Bubble)排序——相邻交换

二、选择排序——每次最小/大排在相应的位置

三、插入排序——将下一个插入已排好的序列中

四、壳(Shell)排序——缩小增量

五、归并排序

六、快速排序

七、堆排序

八、拓扑排序

九、锦标赛排序

十、基数排序

一、冒泡(Bubble)排序

———————————-Code 从小到大排序n个数————————————

void BubbleSortArray()

{

for(int i=1;i

include

include

include

include

define SIZE 100000

define MAX 1000000

struct node

{

long num;//关键字

char str[10];

int lastwin;//最后胜的对手

int killer;//被击败的对手

long times;//比赛次数

}data[SIZE];

long CompareNum=0;

long ExchangeNum=0;

long Read(char name[])//读取文件a.txt中的数据,并存放在数组data[]中;最后返回数据的个数

{

FILE *fp;

long i=1;

fp=fopen(name,”rw”);

fscanf(fp,”%d%s”,&data[i].num,data[i].str);

while(!feof(fp))

{

i++;

fscanf(fp,”%d%s”,&data[i].num,data[i].str);

}

return (i-1);

}

long Create(long num)//创建胜者树,返回冠军(最小数)在数组data[]中的下标

{

int i,j1,j2,max,time=1;

long min;//记录当前冠军的下标

for(i=1;pow(2,i-1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java