排序有很多种方法,但人们首先总会想起冒泡和快排,现在总结一下这两种经典算法。 1. 冒泡 冒泡排序还可以优化,例如当第一次冒泡时发现所有数字已经按照顺序排列,则跳出循环,不必在进行后面的n-2次冒泡,可以如果数据量大的话节约的时间很明显。 优化原理是增进一个标签flag ...
冒泡排序: 顾名思义:参与排序的数据就像水中的气泡慢慢浮出水面一样 浮 到数列顶端。 冒泡排序要点: 两层循环,外层循环控制走访数列重复进行的次数,内层循环进行数据的比较 交换,是数据 上浮 。 内层循环是相邻的数据进行比较。 C语言代码实现: 代码优化: 通过对核心代码的分析,不难发现,当给我们的数据已经是有序状态时,外层循环仍旧会执行n 次,内层循环因为数据已经有序,只会进行相邻数据的比较而不 ...
2017-03-29 11:26 0 1496 推荐指数:
排序有很多种方法,但人们首先总会想起冒泡和快排,现在总结一下这两种经典算法。 1. 冒泡 冒泡排序还可以优化,例如当第一次冒泡时发现所有数字已经按照顺序排列,则跳出循环,不必在进行后面的n-2次冒泡,可以如果数据量大的话节约的时间很明显。 优化原理是增进一个标签flag ...
1、冒泡排序 最初在学c语言时,老师就教的这个排序算法,原理比较简单:从数组下标为0处开始遍历,相邻之间进行比较,若a[i]>a[i+1],则exchange(a[i],a[i+1]),当然也可以将小的往后传递,将此过程不断进行,那么最后数组就有序了。 要点:(1)每遍历一遍 ...
这篇文章仅仅为心中自证,不是算法教学,也不想误人子弟,谢谢各位。 第一章:一些感慨 我断断续续学习算法两年多了,这说起来是多么苦涩,是我笨嘛?一直不知道算法是什么东西。 从《算法导论》再到《C算法》不清楚看了多少遍,它们就是我过不去的坎吗? 不敢说什么大话,但是我有一个心得 ...
Java面试宝典系列之基础排序算法 本文就是介绍一些常见的排序算法。排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序、选择排序、冒泡排序、快速排序(重点)、堆排序、归并排序等等。看下 ...
本文就是介绍一些常见的排序算法。排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序、选择排序、冒泡排序、快速排序(重点)、堆排序、归并排序等等。看下图: 给定数组:int data ...
对冒泡、快排、堆排这3个算法做了验证,结果分析如下: 一、结果分析 时间消耗:快排 < 堆排 < 冒泡。 空间消耗:冒泡O(1) = 堆排O(1) < 快排O(logn)~O(n) 。 应用推荐: 1、速度最快、且允许占用少量的空间:选快排。 2、速度快 ...
常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排) 本文使用Java实现这几种排序算法。以下是对排序算法总体的介绍。 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后 ...
一、概述: 本文给出常见的几种排序算法的原理以及java实现,包括常见的简单排序和高级排序算法,以及其他常用的算法知识。 简单排序:冒泡排序、选择排序、插入排序(本篇博客) 高级排序:快速排序、归并排序、希尔排序(下篇博客) 相关算法知识:划分、递归、二分查找(下篇博客 ...