【16】算法(桶排序)
- 桶排序是一种空间换取时间的排序,不是一种基于比较的排序,最好的情况下时间复杂度是O(n);
- java思路:用List[]类型的集合数组表示桶,每个List代表一个桶,将数据根据整除得到的值直接放到对应编号的集合里面,再依次排序;
- 桶排序思想:把数据分组,放在一个个的桶里面,然后对每个桶里面的数据再进行排序;
void BaseSort() { int a[11], i, j, t; for (i=0; i<=10; i++) { a[i] = 0; } printf("请输入10以内的数字:\n"); for (i=1; i<=5; i++) { scanf("%d", &t); a[t]++; } for (i=0; i<=10; i++) { for (j=1; j<=a[i]; j++) { printf("%d ", i); } } getchar(); getchar(); }
void AdvanceSort() { int a[1001], i, j, t, n; for (i=0; i<=1000; i++) { a[i] = 0; } scanf("%d", &n); printf("请输入%d个数:\n", n); for (i=1; i<=n; i++) { scanf("%d", &t); a[t]++; } for (i=1000; i>=0; i--) { for (j=1; j<=a[i]; j++) { printf("%d ", i); } } getchar(); getchar(); } int main() { AdvanceSort(); return 0; }
参考链接:
https://www.techug.com/post/fastest-most-simple-sort-sort-algorithm.html
做一个优秀的程序媛