冒泡排序:比较相邻的两个元素,如果第一个比第二个大,就交换他们两个。一遍循环下去,最后的元素就是最大的值,最大的沉了下去,依次直到,沉到第一个。
算法代码:
public static void bubblesort(int[] s){
for(int i = 0;i <s.length;i++){
for(int j = 0;j<s.length-i-1;j++){
if(s[j]>s[j+1]){
int temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
}
选择排序思想:第一次在未排序序列中找到最小元素,与第一个交换位置,第二次再从未排序序列(即除去第一个之外的)找到最小的,与第二个交换位置,以此类推,直到结束。
算法代码:
public static void chooseSort(int[] s){
for(int i = 0;i<s.length;i++){
//标记
int k = i;
for(int j = s.length-1;j>i;j--){
//找到剩余中最小的
if(s[k]>s[j]){
k = j;
}
}
//完成交换
int temp = s[i];
s[i] = s[k];
s[k] = temp;
}
}
插入排序:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后面向前找到合适位置后),直到全部插入排序完为止。
算法代码:
public static void insertSort(int[]array){
if (array == null || array.length < 2) {
return;
}
for(int i = 1;i<array.length;i++){
//保存当前的值
int currentValue = array[i];
int position = i;
//从后向前查找位置,边查找边移动,如果array[j]大于current值,则就将array[j+1]赋值为array[j],哨兵前移一位
for(int j = i-1;j>=0;j--){
if( array[j]>currentValue){
array[j+1] = array[j];
position-=1;
}else{
break;
}
}
array[position] = currentValue;
}
}