大的数字往上去,一趟冒泡排序可以找到这个数组中最大的元素
核心代码:
public class Main{
public static void main(String[] args) throws Exception{
int[] so=new int[]{23,24,42,13,43};
for(int i=0;iso[j+1]){
int t=so[j];
so[j]=so[j+1];
so[j+1]=t; } } }}
2.选择排序:
public class Main{
public static void main(String[] args) throws Exception{
int[] so=new int[]{23,24,42,13,43};
for(int i=0;i
3.插入排序:
public static void insertSort(int[] arr){
for(int i=1;i0&&insertValue
4.希尔排序
普通的插入排序是间隔一个比,步长为1
希尔排序的步长是变的
5.快速排序
public static void quickSort(int[] arr,int left,int right){
int l=left;
int r=right;
int mid=arr[(left+right)/2];
int temp=0;
while(lmid)
r--;
if(l>=r)
break;
//如果发生左索引和右索引停住了,就需要交换值
temp=arr[l];
arr[l]=arr[r];
arr[r]=temp;
//如果碰到了 6(mid) 7 6这种僵持的情况,需要右索引打破僵局
if(arr[l]==mid)
r--;
//如果碰到了 6 7 6(mid)这种僵持的情况,需要左索引打破僵局
if(arr[r]==mid)
l++;
}
//第一次循环结束后,选择的基准点将数组分为两部分
if(l==r){
l++;
r--;
}
if(leftl)//右半部分的排序
quickSort(arr,l,right);
}
}
例题:
输入格式
第 11 行为一个正整数 NN,第 22 行包含 NN 个空格隔开的正整数 a_ia
i,为你需要进行排序的数,数据保证了 A_iA i不超过 10^910
输出格式
将给定的 NN 个数从小到大输出,数之间空格隔开,行末换行且无空格。
输入输出样例
输入 #1复制
5
4 2 4 5 1
输出 #1复制
1 2 4 4 5
说明/提示
对于 20%20% 的数据,有 Nleq 10^3N≤10 3
对于 100%100% 的数据,有 Nleq 10^5N≤10 5 。
import java.util.Scanner;
public class Main{
//记住这种开数组的方式,先定义一个static的不定义大小的数组,后面在主函数中在定义数组的大小
static int []arr;
static void quickSort(int left,int right){
int l=left;
int r=right;
int mid=arr[(l+r)/2];
int temp=0;
while(lmid)
r--;
if(l>=r)
break;
temp=arr[l];
arr[l]=arr[r];
arr[r]=temp;
if(mid==arr[r])
l++;
if(mid==arr[l])
r--;
}
if(l==r){
l++;
r--;
}
if(lleft)
quickSort(left,r);
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
arr =new int[n];
for(int i=0;i 


