/**
* 王道书 P360 T03 计数排序
* 可以和王道书 P361 T05 比较思考一下,
* T05是在比较时比较的元素两者都进行count++了,
* 所以下一轮的时候就不用从a[0]开始了,减少了不必要的比较次数。
* 但是 T05 又开了数组 B[],除此之外还有 count[];
* 而 T03 只开了数组 temp[],额外占用的空间更小。
*
* ①算法思想
*
* ②算法设计
*
*/
#include <stdio.h>
#include <iostream>
#include <cstdio>
#include <malloc.h>
#include <cstdlib>
#define MaxSize 20
#define INF 999999
//王道书 P360 T03 计数排序
void CountSort(int arr[],int n){
int count;
int *temp = (int*)malloc(sizeof(int) * n);
for (int i = 0; i < n; ++i) {
count = 0;
for (int j = 0; j < n; ++j) {
if (arr[i] > arr[j])
count++;
}
temp[count] = arr[i];
}
for (int i = 0; i < n; ++i) {
arr[i] = temp[i];
}
free(temp);
}
int main(){
int arr[] = {2,3,4,5,1};
CountSort(arr,5);
for (int i = 0; i < 5; ++i) {
printf("%d ",arr[i]);
}
return 0;
}
王道书 P360 T03(计数排序)
最新推荐文章于 2024-07-06 17:07:12 发布