二分查找要求数组排列时有序的
八种常见的排序1.冒泡排序
2.选择排序
3.插入排序
4.希尔排序
5.快速排序
6.归并排序
7.基数排序
8.堆排序
冒泡排序排序原理:数组元素两两比较,交换位置,大元素往后放,那么经过一轮比较后,最大的元素就会出现在最大的索引处
public class ArrayDemo{
public static void main(String[] args){
int[] arr={24,69,80,57,13};
for(int j=0;jarr[i+1]){
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
选择排序
排序原理:从0索引处开始,依次和后面的元素进行比较,小的元素往前放,经过一轮比较后,最小的元素就出现在最小的索引处
public class ArrayDemo{
public static void main(String[] args){
int[] arr={24,69,80,57,13};
for(int index=0;indexarr[i]){
int t=arr[index];
arr[index]=arr[i];
arr[i]=t;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
插入排序
排序原理:直接插入排序是一种简单的排序方法,他的基本操作是将一个记录插入到长度为m的有序表中,使之还是保持有序
public class ArrayDemo{
public static void main(String[] args){
int[] arr={49,38,65,97,76,13,27};
//外层循环定义轮次
//方法一
private static void toMaxHeap(int[] arr,int size,int index){
//获取左右结点的索引
int leftNodeIndex=index*2+1;
int rightNodeIndex=index*2+2;
//查找最大结点对应的索引
int maxIndex=index;
if(leftNodeIndexarr[maxIndex]){
maxIndex=leftNodeIndex;
}
if(rightNodeIndexarr[maxIndex]){
maxIndex=rightNodeIndex;
}
//调换位置
if(maxIndex!=index){
int t=arr[maxIndex];
arr[maxIndex]=arr[index];
arr[index]=t;
//调整完可能影响到下面的子树不是大顶堆,我们还需要继续再次调整
toMaxHeap(arr,size,maxIndex);
}
}
}
觉得不错的话点个赞呗~~



