1.冒泡排序
public class demo4{
//冒泡排序
public static void main (String[]args){
int[ ]arr = {8,4,2,1,23,344,12};
//输入每一行.arr.length表示上面的数组.减一是因为数组是从0开始的.
for(int rt = 0 ;rt < arr.length-1;rt++){
//输入每一列的值.arr.length-1-rt就是按每一列递减.行数不变
for(int lie = 0;lie<(arr.length-1)-rt;lie++){
//将数组里面的进行大小对比
if(arr[lie]<arr[lie+1]){
//定义一个空值.如果后面的比前面的的大就进行调换位置
int temp = arr[lie];
arr[lie]=arr[lie+1];
arr[lie+1]=temp;
}
}
//进行循环输出对比结束后的值进行排序
}for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"--------");
}
}
}
2.选择排序
public class demo9{
public static void main (String[]args){
//一个数组的数
int[]arr={8,4,2,1,23,344,12};
//输入一行的数
for(int i =0;i<arr.length-1;i++){
//定义要对比的数-1是数组i;//表示对比的数
int max =0;//假设0位是最从0开始-i表示对比数组的每一个
int last = arr.length-1-i;//最后一位数
for(int j = 0;j<arr.length-i;j++){
//定义一行的数
if(arr[max]<arr[j]){//对比出一列对大的数等于max
max=j;
}if(max!=last){//表示没必要和自身去对比
int temp = arr[max];
arr[max]=arr[last];
arr[last]=temp;
}
}
}for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"--------");}
}
3.插入排序
public class demo10{
//插入排序
public static void main (String[]args){
int []arr={8,4,2,1,23,344,12};
for(int a = 0;a<arr.length-1;a++){
//获取要判断的那个数8.4
int curr = arr[a+1];
//直角真三角形,从第二个数和前一个数进行比较.
for(int j=a;j<=a;j--){
//如果获取要判断的那个数小于行里面的数wei
if(curr<arr[j]){
//如果对比的值小于判断的那个则不换位置
arr[j+1]=arr[j];
}else{
break;
}
arr[j]=curr;
} //如果对比的那个值大于判断的那个值那么更换位置
}for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"--------");
}
}
4.希尔排序
public class demo11{
public static void main (String[]args){
int[]arr={8,4,2,1,23,344,12};
//分组插入
//首先计算步长 arr.length/2 [8,1,12][4,23][4.322]
//分组排序[1.8.12][4,23][4.322]
//计算步长/2
//计算步长
for(int jump= arr.length/2;jump>0;jump/=2){
//从每组第二个数开始
//做一个步长区间进行比较
//多少取决于步长
for(int i = jump;i<arr.length;i++){
//去除每组第二个数
int value = arr[i];
//小组中数据循环交换
int j;
for(j=i-jump;j>=0&&value>arr[j];j-=jump){
arr[j+jump]=arr[j];
}
arr[j+jump]=value;
}
}for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"--------");
}
}
}