数组A[N] 算法思想: 1.找出序列中最大的数Max,则序列的范围为0-k; 2.计算每个数出现的次数,用临时数组temp[Max+5]保存(遍历数组,temp[a[i]]++),注:要确保temp的长度>A的长度 3.计算<=i的元素的个数,0-Max都计算一遍 4.根据上一步可以确定<=a[i ...
分类:
编程语言 时间:
2016-09-06 21:21:34
阅读次数:
141
日常操作中常见的排序方法很多,比如有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。 一、冒泡排序 一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。 走访数列的工作是重复地进行直到没 ...
分类:
编程语言 时间:
2016-09-03 01:08:02
阅读次数:
283
不管是C++还是JAVA,都有相应的库提供排序函数。比如,c++中<algorithm>提供了sort函数。不过,能了解常见排序算法的原理,在面试或工作中都有一定的帮助。下面,对常见排序算法进行梳理。 常见的排序算法有:插入排序,选择排序,冒泡排序,希尔排序,快速排序,归并排序,基数排序,堆排序。 ...
分类:
编程语言 时间:
2016-09-01 18:42:42
阅读次数:
226
近期来闲来无事,整理了一些比较常见的排序算法,都是用C++写的,其中包括:直接插入排序、折半插入排序、冒泡排序、选择排序、快速排序、堆排序、归并排序、希尔排序、基数排序,计数排序和桶排序,总共11种算法,其中时间复杂度为O(n^2)为前4种,中间4中的时间复杂度为O(nlgn),最后3种的时间复杂度 ...
分类:
编程语言 时间:
2016-09-01 18:32:02
阅读次数:
279
1.最快最简单的排序,桶排序 问题:假设有5个同学,在一场考试中分别取得分数为(满分10):3 5 8 2 5,如何将他们按从大到小的顺序排列? 解决思路:定义一个长度为11的数组,即a[0]-a[10],下标序号分别对应分数1-10;每一个人得到一个分数n,就使a[n]++,如有两个人得5分,a[ ...
分类:
编程语言 时间:
2016-08-28 11:09:54
阅读次数:
209
Java排序算法 1)分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(箱排序、基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆 ...
分类:
编程语言 时间:
2016-08-26 12:15:05
阅读次数:
253
排序算法可以说是算法的入门以及算法学习阶段的基石,排序算法显得那么的基础又是非常重要的一种算法。排序算法常常作为一些高阶算法的数据处理中间过程在实际的问题处理中被应用的最为广泛,因此算法选将阶段就从八大排序算法开始。在本节内容中既可以看到一般性的比如插入排序,冒泡排序等基础算法又可以看到比如基数排序 ...
分类:
编程语言 时间:
2016-08-23 23:23:42
阅读次数:
267
虽然排序算法是一个简单的问题,但绝对是笔试面试的基础考点,重重之重。来个排序问题都没回答出来,留给面试官的印象也就那样了。 排序主要分为: 比较排序:快速排序、堆排序、归并排序、插入排序、希尔排序、选择排序、冒泡排序 非比较排序:基数排序、计数排序、桶排序 性能比较点: 时间复杂度:一般而言,好的性 ...
分类:
编程语言 时间:
2016-08-23 21:53:29
阅读次数:
392
1.计数排序顾名思义,是对待排序数组中的数据进行统计,然后根据统计的数据进行排序,例如:待排序数组:a[]={100,123,112,123,201,123,112,156,156,178,185,156,123,112}首先取出数组中最大值与最小值(这个不用说了吧)最大值:201最小值:100因此该数组的数值范围为201-100+..
分类:
编程语言 时间:
2016-08-21 01:03:56
阅读次数:
367