选择排序
/**
* 选择排序的思路
* 首先,找到数组中最小的元素,拎出来,将它和数组的第一个元素交换位置,
* 第二步,在剩下的元素中继续寻找最小的元素,拎出来,
* 和数组的第二个元素交换位置,如此循环,直到整个数组排序完成
* */
//[8,2,5,9,7]
public static void sort(int[] arr){
for(int i=0;i<arr.length;i++){
int min = i;//最小元素的下标 记录当前查询比较小的数的下标索引
for(int j=i+1;j<arr.length;j++){
if(arr[j] < arr[min]){
min = j;//将较小数的索引给记录下
}
}
//交换位置
int temp = arr[i];//将arr[0]作为初始值 temp=8
arr[i] = arr[min]; //arr[0]=arr[1](2) 循环后0和1下标的值进行交换 arr[0]=2
arr[min] = temp; //arr[1]=8
}
}
冒泡排序
int[] arr={6,1,7,2,4,5,9,0,3,8};
//冒泡排序 升序排列
int tmp = 0;
boolean isSort = true;
for (int i = 0; i < arr.length-1; i++) {//外围比较9次 控制循环多少趟
for (int j = 0; j < arr.length-1-i; j++) {//内围比较次数减少 1
//一定要记住判断边界条件,
if(arr==null||arr.length<2){
return;
}
if (arr[j]>arr[j+1]) {//6和1进行交换 大的往后靠
tmp=arr[j];//
arr[j]=arr[j+1];//对应下标上数字进行改变 变为1,6,...
arr[j+1]=tmp;
isSort = false;
}
}
if (isSort) {
break;
}
}