CoutingSort
#include <stdio.h>
#include <stdlib.h>
void CountingSort(int A[], int B[], int k,int n)
{
int * C;
C=(int *)calloc(k,sizeof(int));
for(int i=0;i<n; i++)
{
C[A[i]]++;
}
for(i=1; i<k; i++)
{
C[i]+=C[i-1];
}
for(i=n-1; i>=0; --i)
{
B[C[A[i]]-1]=A[i];
C[A[i]]--;
}
free(C);
}
int main()
{
int A[]={1,3,3,2,9,6,7,8,5,6,4,3,7};
int k=10;
int B[13];
CountingSort(A,B,k,13);
printf("排序后的数组\n");
for(int i=0;i<13;i++)
{
printf("%d\t",B[i]);
}
}
注意:
1.数组初始化
int * p=(int *) calloc(k,size(int)); 会对内存空间初始化为0、
int * p=(int *) malloc(k*size(int));不会对内存空间初始化。
2.注意数组下标
分享到:
相关推荐
CountingSort为AlgorithmMan中的计数排序演示工具(这是可执行文件;需要.net 4.0支持;非源代码)。 原文:C#算法设计排序篇之08-计数排序(附带动画演示程序) 链接:...
**C语言实现CountingSort:** C语言的简洁和高效使得它成为实现算法的理想选择。以下是一个简单的Counting Sort C语言实现的框架: ```c #include void countingSort(int arr[], int n) { // 步骤1和2:初始化...
public static int[] countingSort(int[] arr) { // Step 1: 获取数组最大值 int max = Arrays.stream(arr).max().getAsInt(); // Step 2: 初始化计数数组 int[] countArray = new int[max + 1]; // Step ...
python 排序算法之CountingSort
基数排序_Countingsort
var countingSort = require ( './countingSort.js' ) ; // Construct input [0, 5], therefore an array of size 6 is needed // for the temporary storage space. var input = [ 2 , 5 , 3 , 0 , 2 , 3 , 0 , 3 ...
function countingSort(arr) { const min = Math.min(...arr); const max = Math.max(...arr); const count = new Array(max - min + 1).fill(0); arr.forEach(num => count[num - min]++); const sortedArr...
在这个例子中,`countingSort`函数实现了计数排序,`radixsort`函数负责调用`countingSort`并处理从低位到高位的每一位。这段代码适用于整数数组的排序,如果需要处理浮点数或者负数,还需要进行适当的修改。 总结...
计数排序(Counting Sort) 循环排序(Cycle Sort) 双重排序(Double Sort) 荷兰国旗排序(Dutch National Flag Sort) 交换排序(Exchange Sort) 外部排序(External Sort) 侏儒排序(Gnome Sort) 堆排序...
7. **计数排序(Counting Sort)、桶排序(Bucket Sort)、基数排序(Radix Sort)**:这些是针对特定类型数据(如非负整数)的排序算法,可以在一定条件下达到线性时间复杂度。 "sort1.m"的实现可能考虑了算法效率...
在`main`函数中,我们创建了一个测试数组并调用`countingSort`函数进行排序,最后打印出排序后的结果。 需要注意的是,计数排序不是稳定的排序算法,即相等的元素可能会改变它们原来的相对顺序。此外,当元素范围很...
7. **计数排序(Counting Sort)**:非基于比较的排序算法,适用于整数排序,尤其在数据范围不大的情况下效率极高。 在"sort.cpp"中,每种排序算法的实现都可能包含关键步骤的注释,这对于初学者理解各种排序算法的...
经典的排序算法C#源码,包括: 经典排序算法 - 快速排序Quick sort 经典排序算法 - 桶排序Bucket sort 经典排序算法 - 插入排序Insertion sort 经典排序算法 - 基数排序...经典排序算法 - 计数排序Counting sort
7. **计数排序(Counting Sort)**: 计数排序是一种非基于比较的排序算法,适用于待排序的元素范围不大的情况。它通过统计每个元素出现的次数,然后计算出每个元素应该在输出序列中的位置。其时间复杂度为O(n+k),...
1. 冒泡排序(Bubble Sort) def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: ...8. 计数排序(Counting Sort) 解压密码 douge
countingSort 方法实现了计数排序算法。首先,我们遍历一遍原数组,找出其中的最大值,以确定计数数组的大小。然后,创建计数数组 count,并将每个元素的出现次数记录在计数数组中。接下来,根据计数数组中的元素...
1. 冒泡排序(Bubble Sort) public static void bubbleSort(int...7. 计数排序(Counting Sort) 8. 桶排序(Bucket Sort) 9. 基数排序(Radix Sort) 10. 希尔排序(Shell Sort) 解压密码 douge
7. 计数排序(Counting Sort):非基于比较的排序算法,适用于整数排序,通过统计每个元素出现的次数,直接确定每个元素的位置。 8. 桶排序(Bucket Sort):当输入数据服从均匀分布时,桶排序非常有效。将数据分配...
Rank Sort是Comparison Counting Sort的变形,省略了资料排名阵列,而在每一次需要时再去扫瞄资料算出,因此速度更慢。然而,这个程式并没有考虑到键值相同的情况,因此并不实用。 Distribution Counting Sort也是 ...
计数排序(Counting Sort) 桶排序(Bucket Sort) 基数排序(Radix Sort) 搜索算法 线性搜索(Linear Search) 二分搜索(Binary Search) 深度优先搜索(Depth-First Search) 广度优先搜索(Breadth-First ...