黑马程序员_排序

------- 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值