1.冒泡排序
冒泡排序思想:对比数组两个相邻的值,如果前者较大就调换顺序,每次把最大的一个值排到最后,就像冒泡一样。且冒泡排序总排序次数为数组长度减一。
public void bubblerSort(int[] arr){
for(int i=1;i<arr.length;i++){
int temp;
for(int j=0;j<arr.length-i;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
2.插入排序
排序思想:将数组中的所有元素依次跟前面已经排好的元素相比较, 如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过
public static void sort(int[] arr){
if(arr.length==1){
return;
}
/**外层循环,控制循环次数,默认把数组第一个值作为已排序,所以下标从数组第二个元素开始*/
for(int i=1;i<arr.length;i++){
/**需要排序值的前一位*/
int j=i-1;
/**当前需要插入的值*/
int temp = arr[i];
/**内层循环,对数组进行位移*/
for(;j>-1;j--){
if(temp>arr[j]){
arr[j+1]=arr[j];
}else{
break;
}
}
arr[j+1]=temp;
}
for(int k=0;k<arr.length;k++){
System.out.print(arr[k]+" ");
}
}
3.选择排序
选择排序思想:基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;
然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止
public static void sort(int[] arr){
for(int i=0;i<arr.length-1;i++){
int index = i;/**默认第一个数最小*/
for(int j=i+1;j<arr.length;j++){
if(arr[j]<arr[index]){
index = j;/**获取最小数据下标*/
}
}
/**交换*/
int temp = arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
for(int k=0;k<arr.length;k++){
System.out.print(arr[k]+" ");
}
}