冒泡排序:
public void sort(int[] array){
int tmp;
/**
* 冒泡法就是每次循环找出最大的数同时将它方到最上面。
* i:控制总循环次数
* j:控制每个大循环的比较
*/
for (int i = array.length-1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if(array[j]>array[j+1]) {
tmp = array[j + 1];
array[j + 1] = array[j];
array[j] = tmp;
}
}
}
}
选择排序:
/**
* 变量i:控制循环次数
* j:控制每次大循环中小循环的次数,依次对未排序的数值进行比较
* k:指向当前循环状态下最小的那个数
* 依次大循环结束后交换k与i为索引的数据项
*/
public void sort2(int[] array){
int tmp;
for (int i = 0; i < array.length-1; i++) {
int k=i;
for (int j = array.length-1; j > i; j--) {
if (array[j]<array[k]){
k=j;
}
}
tmp=array[k];
array[k]=array[i];
array[i]=tmp;
}
}
选择排序比冒泡排序的效率要高,因为冒泡排序的交换次数多。
插入排序:
原理:将数组看作两个独立的数组,一段数是已经排序完的数组,一组是带排序的数组。遍历时依次取出后面的数组项的值与前面的进行比较。如果比当前的数大则将前面的数字进行前移,直到第一个比该数字小的数或者倒数组边界。
public void sort4(int[] array){
int tmp;
for (int i = 1; i < array.length; i++) {
tmp=array[i];
int j;
for (j = i; j > 0 && array[j-1]>=tmp; j--) {
array[j]=array[j-1];
}
array[j]=tmp;
}
}