对:10,18,4,2,69,17 进行按顺序排序输出:
如下方法很快:
TreeMap demo = new TreeMap();
demo.put("10",null);demo.clear();
================
快速排序法:
package test.quicSort;
public class QuicSort {
public int getMiddle(Integer[] list, int low, int high) {
int tmp = list[low]; //数组的第一个作为分界点
while (low < high) {
while (low < high && list[high] > tmp) {
high--;
}
list[low] = list[high]; //比分界点小的记录移到左端
while (low < high && list[low] < tmp) {
low++;
}
list[high] = list[low]; //比分界点大的记录移到右端
}
list[low] = tmp;
return low; //返回分界点的位置
}
public void _quickSort(Integer[] list, int low, int high) {
if (low < high) {
int middle = getMiddle(list, low, high); //将list数组进行一分为二
_quickSort(list, low, middle - 1); //对分界线左侧数据进行递归排序
_quickSort(list, middle + 1, high); //对分界线右侧进行递归排序
}
}
public void quick(Integer[] str) {
if (str.length > 0) { //查看数组是否为空
_quickSort(str, 0, str.length - 1);
}
}
}
总结:每次用左边第一个数作为中间值(分界点)把小于中间值的放在左边,把大于中间值得放在右边,然后在对中间值左边的进行重复操作,对中间值右边的进行重复操作。
===================
冒泡排序法:
package test.bubblesort;
public class BubbleSort {
public void bubble(Integer[] data){
for(int i=0;idata[j+1]){
int temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
}
}
}
}
}
测试类:
package test.quicSort;
import java.util.Iterator;
import java.util.TreeMap;
import test.bubblesort.BubbleSort;
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
Integer[] list={2,6,4,7,3,11};
//Integer[] list={27,38,65,97,21};
QuicSort qs=new QuicSort(); //快速排序使用
qs.quick(list);
//BubbleSort bs = new BubbleSort(); //冒泡排序使用
//bs.bubble(list);
for(int i=0;i
总结:冒泡排序的过程很简单,就是将第一个记录的关键字和第二个记录的关键字进行比较,如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。比完一趟,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较。