算法导论C语言实现: 计数排序
2013-12-03 17:06
183 查看
#include <common.h> //COUNTING-SORT //k: 0-k void COUNTING_SORT( __in sortdata_i_t *A, __out sortdata_i_t *B, __in int k) { int *C = (int *)malloc(sizeof(int)*(k + 1)); int i = 0; int j = 0; for (i = 0; i <= k; ++i) { C[i] = 0; } for (j = 0; j < A->length; ++j) { C[A->data[j]]++; } for (i = 1; i <= k; ++i) { C[i] += C[i-1]; } for ( j = (A->length - 1); j >= 0; --j) { B->data[C[A->data[j]] - 1] = A->data[j]; C[A->data[j]]--; } free(C); } #define ARRAY_SIZE 16 #define MAX_VALUE 8 void main() { sortdata_i_t A, B; int i = 0; A.data = (int *)malloc(ARRAY_SIZE * sizeof(int)); A.length = ARRAY_SIZE; B.data = (int *)malloc(ARRAY_SIZE * sizeof(int)); B.length = ARRAY_SIZE; if (A.data == NULL || B.data == NULL) { TRACE("Out of memory!\n"); if (A.data != NULL) { free(A.data); } if (B.data != NULL) { free(B.data); } return; } memset(A.data, 0, sizeof(int) * A.length); memset(B.data, 0, sizeof(int) * B.length); for (i = 0; i < A.length; ++i) { A.data[i] = rand()%(MAX_VALUE + 1); } COUNTING_SORT(&A, &B, MAX_VALUE); free(A.data); free(B.data); system("pause"); }
相关文章推荐
- 算法数据结构C++实现4-计数排序(counting sort)
- C++实现计数排序
- 计数排序、桶排序python实现
- 【程序员笔试面试必会——排序②】Python实现 计数排序、基数排序
- 数据结构与算法分析笔记与总结(java实现)--排序6:计数排序练习题
- 浅谈排序算法实现 (计数排序、基数排序)
- 两种非比较排序的原理和实现(计数排序和基数排序)
- 【数据结构】非比较排序算法(实现计数排序和基数排序)
- 算法导论C语言实现: 堆排序
- 《算法导论》中的计数排序的C++实现
- PHP 基数排序(计数排序实现)
- java 实现计数排序和桶排序实例代码
- python实现计数排序
- 排序算法之——计数排序(Java实现)
- 《算法导论》CLRS算法C++实现(五)P98 计数排序
- Java实现基于桶式排序思想和计数排序思想实现的基数排序
- Python实现各类数据结构和算法---计数排序
- 计数排序(Countsort)之Java实现
- 计数排序(c++实现)
- php实现计数排序