[编程珠玑]可变长位字符串的排序问题
来源:互联网 发布:sm2算法 编辑:程序博客网 时间:2024/06/01 11:33
这个问题是在编程珠玑的11章习题5.
我看了该题的答案,按照答案实现的程序硬是跑不出来,我给的测试位字符串数组为:
bitchars test[7];
test[0].len =2;
test[0].chars ="01";
test[1].len =5;
test[1].chars ="11010";
test[2].len =1;
test[2].chars ="1";
test[3].len =7;
test[3].chars ="0101011";
test[4].len =4;
test[4].chars ="0111";
test[5].len =1;
test[5].chars ="0";
test[6].len =4;
test[6].chars ="0101";
随后,自己分析了一下,改了改,可以了~~哈哈
贴代码:
/*
void quickSortA1(bitchars array[], int l, int u, int sublen);
快速排序应用,对可变长的位字符串数组[l,u)进行排序
*/
void quickSortA1(bitchars array[],int l,int u,int sublen)
{
if (l >= u) {
return;
}
//将长度小于等于sublen的字符串移至数组左边
for (int i = l; i < u; i++) {
if (array[i].len <= sublen) {
swap(&array[i],&array[l]);
l++;
}
}
int m = l;
if (l >= u) {
return;
}
//将第sublen位为0的字符串移至长度为sublen字串的后面,为下一次循环左准备
for (int i = l; i < u; i++) {
if (array[i].chars[sublen] =='0') {
swap(&array[i],&array[m]);
m++;
}
}
//注意,l是变化的。经过两个循环能保证起始位置至l处的已排好序,所以只需对l以后的数组排序
quickSortA1(array, l, u, sublen+1);
}
另,函数调用时使用从sublen=0,即可
- [编程珠玑]可变长位字符串的排序问题
- 利用位运算解决排序问题(摘自编程珠玑)
- 【编程珠玑】排序与位向量
- [编程珠玑]-第一章:位图/位向量排序
- 编程珠玑开篇--磁盘文件排序问题
- 编程珠玑开篇--磁盘文件排序问题
- 编程珠玑第一章,电话号码排序问题
- 编程珠玑开篇--磁盘文件排序问题
- "编程珠玑" 第一章 磁盘文件排序问题
- 记录《编程珠玑》中通过位开关来实现排序的方法
- 编程珠玑-位存储
- 编程珠玑:1.2 位向量用于大数存储及排序
- java可变长字符串
- 三个版本的插入排序 - 编程珠玑
- 编程珠玑----快速排序的变形
- 【编程珠玑-读书笔记】用位图解决排序问题--仔细分析问题的重要性
- 编程珠玑: 电话号码排序
- 编程珠玑笔记--排序
- 解析J2EE与XML组合技术(1)
- 打开VS 2008出现“ 试用版的评估启用...”的解决方案
- java 的singleton模式
- 使用jquery实现图文切换效果
- liunx学习日记
- [编程珠玑]可变长位字符串的排序问题
- 贴片元件封装--SMT基础知识介绍
- Linux 命令大全
- 使用iOS系统中的编辑联系人界面,其中的思路值得借鉴(继承的思想)
- Java线程创建
- 算法导论学习笔记--2--堆排序
- mongo基本操作
- IntelliJ Idea导出javadoc乱码解决方案
- 面试题01 - 二叉树的镜像 【树】[ water ]