二进制快速排序

来源:互联网 发布:淘宝泄露买家信息处罚 编辑:程序博客网 时间:2024/05/29 18:28

摘自: 算法:C语言实现(第1~4部分) P261

//Item.h#define bitsword 32#define bitsbyte 8#define bytesword 4#define R (1 << bitsword)typedef char Item;#define exch(A, B) {Item t; t = A; A = B; B = t;}#define digit(A, B) (((A) >> (4 - B)) & 1)

//main.cpp#include "Item.h"#include <iostream>using namespace std;void quicksortB(Item a[], int l, int r, int w){int i = l, j = r;if(r <= l || w > 4) return;while (j != i){while(digit(a[i], w) == 0  && (i < j)) i++;while(digit(a[j], w) == 1  && (j > i)) j--;exch(a[i], a[j]);}if(digit(a[r], w) == 0) j++;   //判断是否所有的关键字的w位都是0quicksortB(a, l, j-1, w+1);quicksortB(a, j, r, w+1);}void sort(Item a[], int l, int r){quicksortB(a, l, r, 0);}int main(void){char Num[15] = {'A','S','O','R','T','I','N','G','E','X','A','M','P','L','E'};for (int i = 0; i < 15; i++)cout << Num[i] << " ";cout << endl;sort(Num, 0, 14);for (int i = 0; i < 15; i++)cout << Num[i] << " ";cout << endl;}




0 0
原创粉丝点击