黑马程序员_排序
2015-10-17 22:48
375 查看
------- android培训、java培训、期待与您交流!
----------
java排序,目前我掌握的有选择排序、冒泡排序、插入排序、快速排序。(排序默认从小到大排)
这里说插入排序和快速排序。
一、插入排序
从第2位开始,认为之前的顺序已经排好。然后将后面的数据插入到前面已经排好的数据中。
二、快速排序
快速排序主要运用了递归的思想。首先选取第一位作为分界值,然后将头尾的值和这个值对比,大的放在后面,小的放在前面。当前后排完后,分界值就位于了数组中的某个位置,然后以这个位置为分割,再对这个位置前后两个数组进行同样的操作。直到最后全部排完。
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net/heima
----------
java排序,目前我掌握的有选择排序、冒泡排序、插入排序、快速排序。(排序默认从小到大排)
这里说插入排序和快速排序。
一、插入排序
从第2位开始,认为之前的顺序已经排好。然后将后面的数据插入到前面已经排好的数据中。
//插入排序 public static void insertSort(int[] a) { //从i=1开始 for (int i = 1; i < a.length; i++) { int j; //保存当前的值 int temp = a[i]; for (j = i; j > 0; j--) { //如果当前准备插入的值小于前1位的值 if (a[j - 1] > temp) { //值后移 a[j] = a[j - 1]; } else { break; } } //确定插入的位置 a[j] = temp; } }
二、快速排序
快速排序主要运用了递归的思想。首先选取第一位作为分界值,然后将头尾的值和这个值对比,大的放在后面,小的放在前面。当前后排完后,分界值就位于了数组中的某个位置,然后以这个位置为分割,再对这个位置前后两个数组进行同样的操作。直到最后全部排完。
/* * 快速排序 * @param a 待排序数组 * @param low 数组最小下标 * @param high 数组最大下标 */ public static void quickSort(int[] a, int low, int high) { //定义临时变量,保留low high的值 int i = low; int j = high; if(i < j) { //存放分界点的值 int temp = a[i]; while(i < j) { //如果高位不小于分界值,循环继续 while(i < j && a[j] >= temp) { //高位的下标向中间移 j--; } //交换高低位的值 a[i] = a[j]; //如果低位的值不大于分界值,循环继续 while(i < j && a[i] <= temp) { //低位下标向中间移 i++; } //交换高低位的值 a[j] = a[i]; } //i为找到的分界点下标,赋值 a[i] = temp; //递归判断分界点两边的值 quickSort(a, low, i-1); quickSort(a, i+1, high); } }
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员_JAVA反射学习
- 黑马程序员_DOM方式对xml文档进行CRUD
- 黑马程序员_基于XML的学生成绩管理平台
- 面试刷题记录
- 面试刷题记录
- 黑马程序员_SAX解析XML文档
- 黑马程序员_正则表达式
- 程序员必须知道的10大基础实用算法及其讲解
- 交换两个变量的值 - 经典面试题
- 黑马程序员——高新技术--枚举
- 黑马程序员——多线程二
- 4399,酷狗,闺蜜圈面试总结
- iOS开发工程师的一些面试题
- 黑马程序员——Java基础之反射二
- 《剑指Offer》面试题:树中两结点最低公共祖先
- 助你全面攻破Hibernate笔试面试
- 面试题 求一个字节中的1的位数
- 黑马程序员——Java中的线程技术
- 面试技巧及注意事项
- 北京前端实习面试总结2015