必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序
2015-09-09 10:24
806 查看
冒泡排序
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序的示例:
冒泡排序的算法实现如下:【排序后,数组从小到大排列】
快速排序
快速排序的基本思想:
通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。
快速排序的示例:
(a)一趟排序的过程:
(b)排序的全过程
把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交换。这样循环往复,一趟排序完成,左边就是比中轴小的,右边就是比中轴大的,然后再用分治法,分别对这两个独立的数组进行排序。(未完待续)
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序的示例:
冒泡排序的算法实现如下:【排序后,数组从小到大排列】
/** * 冒泡排序 * 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 * 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 * 针对所有的元素重复以上的步骤,除了最后一个。 * 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 * @param numbers 需要排序的整型数组 */ public static void bubbleSort(int[] numbers) { int temp; //记录临时中间值 int size = numbers.length; //数组大小 for(int i = 0 ; i < size - 1 ; i++) { for(int j = i + 1 ; j < size ; j ++) { if(numbers[i] > numbers[j]) //交换两数位置 { temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } } } }
快速排序
快速排序的基本思想:
通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。
快速排序的示例:
(a)一趟排序的过程:
(b)排序的全过程
把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交换。这样循环往复,一趟排序完成,左边就是比中轴小的,右边就是比中轴大的,然后再用分治法,分别对这两个独立的数组进行排序。(未完待续)
相关文章推荐
- Java 正则表达式
- 文章标题
- javax.ws.rs 创建 restful 服务 与使用 spring框架创建的 restful有啥区别呢?
- spring提供的解决中文乱码方案
- java优秀书籍列表
- Spring @Transactional (声明试事务)
- ajax传递json数据,springmvc后台就收json数据
- 从Zero学习String源码
- 7 款开源 Java 反编译工具
- JAVA读写文件
- ubuntu按转jdk
- ubuntu按转jdk
- 一个Java Dao测试用例
- java多线程实例
- spring&nbsp;security+cas&nbsp;中…
- spring&nbsp;security总结&nbsp;太有用了!!
- struts2&nbsp;简单注解配置实现用户登录
- Mybatis3.2和Spring3.x整合----Myb…
- Mybatis3.2和Spring3.x整合----Myb…
- Mybatis3.2和Spring3.x整合----Myb…