第七章快速排序之“区间模糊排序FUZZY-SORT”(待改进。。。)
2012-01-07 17:14
429 查看
快速排序可以看成区间大小为1的模糊排序。
#include <string.h> #include <time.h> #define BUFFER_SIZE 10 typedef struct { int start; int end; }Node; int FuzzyPartition(Node *a,int p,int r) { Node tmp; int i=0; int j=0; int k=0; Node x; i=p-1; x.start=a[r].start; x.end=a[r].end; for(j=p;j<r;j++) { if(a[j].end<x.start) {//在所选主元区间左边 i++; tmp.start=a[i].start; tmp.end=a[i].end; a[i].start=a[j].start; a[i].end=a[j].end; a[j].start=tmp.start; a[j].end=tmp.end; } else if(a[j].start>x.end) {//在所选主元区间右边 ; } else {//与所选主元区间有重叠,则将主元区间更新为重叠部分 x.start=(a[j].start>=x.start)?a[j].start:x.start; x.end=(a[j].end<=x.end)?a[j].end:x.end; } } i++; tmp.start=a[i].start; tmp.end=a[i].end; a[i].start=a[j].start; a[i].end=a[j].end; a[j].start=tmp.start; a[j].end=tmp.end; return i; } void FuzzySort(Node *a,int p,int r) { int q=0; if(p<r) { q=FuzzyPartition(a,p,r); FuzzySort(a,p,q-1); FuzzySort(a,q+1,r); } } int main() { int i=0; int j=0; Node a[BUFFER_SIZE]; //随机生成数组 srand((unsigned)time(NULL)); for(j=0;j<BUFFER_SIZE;j++) { a[j].start=rand()%100; a[j].end=rand()%100+100; } printf("随机生成的区间:\n"); for(i=0;i<BUFFER_SIZE;i++) { printf("%d %d\n",a[i].start,a[i].end); } printf("\n"); FuzzySort(a,0,BUFFER_SIZE-1); printf("对区间进行模糊排序:\n"); for(i=0;i<BUFFER_SIZE;i++) { printf("%d %d\n",a[i].start,a[i].end); } system("pause"); return 0; }
相关文章推荐
- 第7章 快速排序(快速排序,模糊区间排序)
- 模糊排序问题(Fuzzy sort)
- 模糊排序问题(Fuzzy sort)
- 快速排序 改进快排的方法
- 快速排序改进
- JavaScript数组的快速克隆(slice()函数)和数组的排序、乱序和搜索(sort()函数)
- 快速排序的层次改进
- 算法导论第七章-快速排序-c++
- JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
- STL sort 函数实现详解 作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现。以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的
- 算法分析之——quick-sort快速排序
- 快速排序.对区间的模糊排序
- 算法导论第7章课后题(对区间的模糊排序)
- 标准库函数——快速排序sort
- 快速排序改进算法
- 第七章快速排序之“快速排序QUICKSORT”
- 对区间的模糊排序
- 对区间的模糊排序
- 第七章 ALDS1_6_D:Minimum Cost Sort 最小成本排序
- 笔试算法题(54):快速排序实现之单向扫描、双向扫描(single-direction scanning, bidirectional scanning of Quick Sort)