算法学习笔记之计数排序
来源:互联网 发布:钢琴键盘软件 编辑:程序博客网 时间:2024/05/10 00:24
计数排序属于线性排序的一种,时间复杂度为Θ(n),但不是原址排序,牺牲了一定的空间复杂度
C#实现如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace AlgorithmTest{ class CountingSort { public void Counting_Sort ( int[] arr, int k ) { int length = arr.Length; //存储结果的数组 int[] result = new int[length]; //临时数组,用于记录arr中每个元素出现次数,元素的值对应temp的下标 int[] temp = new int[k]; int i = 0; //初始化temp数组 for (i = 0; i < k; i++) { temp[i] = 0; } //开始计数,arr中的值每出现一次,temp对应位置的元素值加1 for (i = 0; i < length; i++) { temp[arr[i] - 1] = temp[arr[i] - 1] + 1; } //从前往后,依次将值加到后面一项,这样可以保证temp中每个元素中存储了arr中小于等于当前值的元素个数 for (i = 1; i < k; i++) { temp[i] = temp[i] + temp[i-1]; } //依据temp中的值,将arr中每个元素放到result中去,每放一个temp中值要减1,这样为了如果出现相同元素,不会重复写到同一个位置 for (i = length-1; i >= 0; i--) { result[temp[arr[i] - 1] - 1] = arr[i]; temp[arr[i] - 1]--; } } }}
- 算法学习笔记之计数排序
- 算法笔记之 计数排序
- 算法学习之计数排序
- 计数排序—《算法导论》学习笔记之五
- 算法导论_计数排序学习笔记
- 计数排序-《算法导论》学习笔记八
- 算法导论学习笔记(一)排序算法之计数排序
- 《算法导论》学习之计数排序
- [算法学习笔记]线性时间排序----计数排序
- 算法导论学习笔记——计数排序算法
- 排序算法之计数排序
- 排序算法之计数排序
- 排序算法之计数排序
- 排序算法之计数排序
- 排序算法之计数排序
- 排序算法之计数排序
- 排序算法之计数排序
- 排序算法之计数排序
- java转码问题解决---收集
- NSThread创建CFRunLoop控制动画 高级使用技巧(翻译)
- 给ecshop后台增加管理功能页面
- POJ-1386-Play on Words
- 土改悲剧——地主被消灭使中国农业产业化至今未果
- 算法学习笔记之计数排序
- java web 开发中各种注意点总结(转)-后期可能会出原创版
- uva 10057 A mid-summer night's dream.
- Spring中Quartz的配置
- 九度 题目1531 货币面值 (组合数学,母函数应用)
- tomcat 开机linux自动启动
- javascript核心
- Java学习之道:JSONObject
- js页面刷新方法