一,认识,冒泡排序,选择排序及优化
认识
1.什么是算法?
解决某个实际问题的过程
2.为什么学?
编程思维
冒泡排序
1.每次从数组中找出最大值放在数组的后面
//1.准备一个数组
int[] arr={5,2,3,1};
//2.定义一个循环控制几轮
for (int i = 0; i <arr.length-1; i++) {
//i=0 1 2 [5,2,3,1]
//i=0 0 1 2 3
//i=1 0 1 2
//i=2 0 1
//3.定义一个循环控制每轮比较几次
for (int j = 0; j <arr.length-i-1 ; j++) {
//判断当前位置的元素值,是否大于一个位置处的元素值,如果大则交换
if (arr[j]>arr[j+1]){
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
选择排序
1.每轮选择当前位置,开始找出后面的叫嚣至于该位置交换
//1.准备一个数组
int [] arr={5,1,3,2};
// 0,1,2,3
//2.控制选择几轮
for (int i = 0; i <arr.length-1; i++) {
//i=0 第一轮 j=1,2,3
//i=1 第二轮 j=2,3
//i=2 第三轮 j=3
for (int j = i+1; j <arr.length; j++) {
if (arr[i]>arr[j]){
int temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
优化
1.找到后几个的的较小值,再判断是否交换
//1.准备一个数组
int [] arr={5,1,3,2};
// 0,1,2,3
//2.控制选择几轮
for (int i = 0; i <arr.length-1; i++) {
//i=0 第一轮 j=1,2,3
//i=1 第二轮 j=2,3
//i=2 第三轮 j=3
int minIndexx=i;
for (int j = i+1; j <arr.length; j++) {
if (arr[minIndexx]>arr[j]){
minIndexx=j;
}
}
//是否交换
if (i!=minIndexx){
int temp=arr[i];
arr[i]=arr[minIndexx];
arr[minIndexx]=temp;
}
}
System.out.println(Arrays.toString(arr));