黑马程序员_排序

来源:互联网 发布:网络搞笑猛虎下山图 编辑:程序博客网 时间:2024/05/30 04:53
------- android培训java培训、期待与您交流! ---------- 
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

0 0