博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法之珠排序
阅读量:6812 次
发布时间:2019-06-26

本文共 1141 字,大约阅读时间需要 3 分钟。

排序算法之珠排序

        基本思想:将每个数用珠子表示,例如:数字5就是5个珠子。用珠子表示好每一个数后,让所有的珠子自由下落。排序完成。

        例如:数字,{6, 2, 4, 1, 5, 9}

        (1)将这些数都用珠子表示。

       (2)让珠子自由下落。

完成了排序{1, 2, 4, 5, 6, 9}

BOOL BeadSort(datatype *array, int size){	char **bead;	int i, j, k, n, len;	if(array == NULL) {		return FALSE;	}//确定每行珠子的最大个数	GetMax(array, size, &len);//初始化	bead = (char **)calloc(size, sizeof(char *));	if(bead == NULL) {		return FALSE;	}	for(i = 0; i < size; i++) {		bead[i] = (char *)calloc(len, sizeof(char));		if(bead[i] == NULL) {			return FALSE;		}	}	for(i = 0; i < size; i++) { 		for(j = 0; j < array[i]; j++) {			bead[i][j] = 1;		}	}//初始化完毕,将所有的数按顺序用珠子表示。//让珠子自由下落        for(j = 0; j < len; j++) {		i = k = size-1;		while(i >= 0) {			if(bead[i--][j] == 1) {				bead[k--][j] = 1;			}		}		while(k >= 0) {			bead[k--][j] = 0;		}	}//自由下落完毕//收集珠子,统计每一行有多少个珠子        for(i = 0; i < size; i++) {		j = n = 0;		while(j < len) {			if(bead[i][j++] == 0) {				break;			}			n++;		}		array[i] = n;	}//排序完成	return TRUE;}

          待排序序列:{9, 11, 15, 20, 19, 0, 5, 1, 10, 17, 13, 15, 11, 19, 11, 7, 20, 6, 10}          

         (1)初始化,用珠子表示数字。

                                                                        

          (2)让珠子自由下落

                                                                        

         排序完成。{0, 1, 3 ,5 ,6, 7, 9, 10 ,10 , 11, 11, 11, 13, 15, 16, 17, 19, 19, 20, 20}

你可能感兴趣的文章
【JavaScript】通过封装自己的JSONP解决浏览器的跨域问题(Ajax跨域)
查看>>
企业公有云服务的构建“捷径”,看这一篇文章就够了
查看>>
专注“智造”,李群自动化获亿元级C轮融资
查看>>
[剑指offer] 和为S的两个数字
查看>>
EntityFramework实现增删改查
查看>>
Android 自用 App保活——音乐播放保活适配8.0 (贼好用)
查看>>
Gradle基础语法Groovy
查看>>
如何快速学习数据挖掘,机器学习,人工智能?
查看>>
程序媛成长纪:从DBA到研发工程师
查看>>
线程的几种状态转换 sinat_36042530 0...
查看>>
揭秘 Google Titan M 芯片:Pixel 3 的终极保镖是如何炼成的?
查看>>
设置外部查找工具来索引 Confluence 6
查看>>
如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (三)
查看>>
Webpack 和 Gulp 构建伪命令行项目
查看>>
在线面试, 前端, 提纲, 草稿
查看>>
hive_异常_01_ Terminal initialization failed; falling back to unsupported
查看>>
分布式事务键值数据库 TiKV 加入 CNCF 沙箱孵化器
查看>>
pycharm2017 pro激活码
查看>>
自助搭建git服务
查看>>
Vue - day1
查看>>