一.冒泡排序的思路
参考百度文库 https://baike.baidu.com/item/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/4602306?fr=aladdin
具体过程图:
java代码实现逻辑
public static void doubleSoft(int[] array){
//对冒泡排序进行优化
boolean flag=false;
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-i-1;j++){
if(array[j]>array[j+1]){
flag=true;
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
if(!flag){
break;
}else {
flag=false;
}
System.out.println("第"+(i+1)+"次排序"+ Arrays.toString(array));
}
System.out.println("最终排序结果:"+Arrays.toString(array));
}
二.选择排序思路
(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。[
(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。
(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。
(4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了
其核心思路就是找出每次中最小的值 与当前值交换位置
具体过程图
Java 代码实现过程
public static void selectSort(int[] array){
for(int i=0;i<array.length-1;i++){
int minIndex=i;
int min=array[i];
for(int j=i+1;j<array.length;j++){
if(min>array[j]){
minIndex=j;
min=array[j];
}
}
System.out.println("第"+(i+1)+"轮排序");
if(minIndex!=i){
array[minIndex]=array[i];
array[i]=min;
}
System.out.println("数组顺序为:"+ Arrays.toString(array));
}
System.out.println("最后的排序结果为:"+Arrays.toString(array));
}
三.插入排序思路
输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,该数组排序完毕。
具体过程图
Java 代码实现方式
public static void insertSort(int[] array){
for(int i=1;i<array.length;i++){
int insertIndex=i-1;
int insertValue=array[i];
while (insertIndex>=0 && insertValue<array[insertIndex]){
array[insertIndex+1]=array[insertIndex];
insertIndex--;
}
array[insertIndex+1]=insertValue;
System.out.println("第"+i+"次排序结果"+ Arrays.toString(array));
}
System.out.println("最后排序结果:"+Arrays.toString(array));
}