排序法是根据一些特定的标准(例如工作的复杂程度、对组织的贡献大小等对各个职位的相对价值)进行整体比较,进而将职位按照相对价值的高低排列出一个次序。其基本步骤是:
1、对排序的标准达成共识。虽然排序法是对岗位的整体价值进行评价而排序,但也需要参与评估的人员对什么样的“整体价值”更高达成共识,如责任更大,知识技能更高,工作更加复杂,环境因素恶劣等。
2、选定参与排序的职位。如果公司较小可以选取全部职位进行排序。
3、评定人员根据事先确定评判标准,对公司同类岗位的重要性逐一作出评判,最重要的排在第一位,次要的、再次要的顺次往下排列。
4、将经过所有评定人员评定的每个岗位的结果加以汇总,得到序号和。然后将序号和除以评定人数,得到每一岗位的平均序数。最后,按平均序数的大小,由小到大评定出各岗位的相对价值的次序。
首先要写正确。通常使用递归实现。其递归相当于二叉树展开,因此如果要用迭代实现的话需要使用一个队列来保存后续遍历信息。
快速排序需要找到一个pivot值,如果顺序选择pivot则易造成N^2的复杂度,如果使用随机数则效果最好,但开销又太大,采取三数中值法比较合适。三数中值法指的是选取第一个值,最后一个值,数组中间的值的中值。有文献表明可以提升5%的运行时间。
当数组长度较小时,如10个元素以下,最好使用插入排序或者选择排序完成,以防止复杂度常数因子过大或多次函数调用带来的开销。而递归到底层数组长度总是会变小的,因此这么做非常有必要。
在合并前后两部分数组时,采用两边夹方法,在前后两部分各找到一个大于和小于的值再交换。相比通常情况下找到比pivot小的值就进行交换,能提高运行效率。
冒泡排序算法的原理:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
扩展资料:
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
算法稳定性:
冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
参考资料:
常用的排序算法有很多:
冒泡,快速排序,直接插入,希尔排序,选择排序,堆排序,归并排序!
就举冒泡排序(c++):
void
bubblesort()
{
for
(i=0;i<max;i++)
{
for(j=l;j>=i+1;j--)
if(a[j]<a[j-1])
//小则交换
{
a[0]=a[j];
a[j]=a[j-1];
a[j-1]=a[0];
}
}
}
以上意见仅供参考!
以上就是关于排序法的排序法的基本步骤全部的内容,包括:排序法的排序法的基本步骤、如何写出一个较好的快速排序程序、冒泡排序法是如何排序的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)