排序算法——冒泡,选择,插入,堆

一、冒泡排序

【原理:从头至尾对相连的数字进行两两比较,比较完之后,将较小的数字放在左边,较大的数字放在右边,比较的次序是(假设有N个数字):1-2,1-3,1-4,...1-N,2-1,2-2,...2-N,...(N-1)-N,需要两次循环】

 

 

二、选择排序

【原理:顾名思义,选择排序就是指从数字中选出最小的放在最左边,我们人类平时自然进行排序时就是用的这种方法,因为这种方法最直观。选择的数字段是(假设有N个数字):从1~N号数字中选出最小的数字与1号位数字进行交换,然后从2~N号数字钟选出最小的数字与2号位数字进行交换,...从N-1~N号数字中选出最小的数字与N-1号位数字进行交换,需要两次循环】

 

 

三、插入排序

【原理:这种排序类似于我们平时打扑克牌时在手中插排扑克的方法,就是不断的从后面的数字中抽出数字插队到之前的已经排好顺序的数列中去,插排的次序:第一趟,第一个数字不动;第二趟,抽出2号数字与1号比较,插到适合的位置;第三趟,抽出3号数字与之前的数字进行比较,然后插队到适合的位置,然后将插队位置之后的数字顺势向后挪一位;...第N趟,...】

 

 

四、堆排序

【原理:堆是一种数据结构,一种完全二叉树(所有根节点子叶中可以左右孩子成双存在,可以做孩子单独存在,但是绝对不可以右孩子单独存在,并且全部的子叶都优先排在左边,根节点必须大于叶节点),这种排序,首先是要建立堆,然后再调整顺序,就这样循环进行,直到排序完毕。

建立堆:对堆的所有基础堆进行分析,将子叶中较大的数字与根节点交换;

调整顺序:(假设我们是从小到大排序)先对1~N号数字建立堆,将最大的数字挪至1号位置,然后将1号位置的最大数与 N号位置的数字进行交换,接下来是对1~N-1,1~N-2,...1~2号数字进行相似的处理.....

 

{具体代码详见文档}

猜你喜欢

转载自yuyongjia.iteye.com/blog/1646657