冒泡排序
public class MyDemo05{
public static void main(String [] args) {
//冒泡
int [] arr={8,4,2,1,23,344,12};
for ( int row=0; row<arr.length-1; row++ ) {
for ( int col=0; col<arr.length-1-row; col++ ) {
if ( arr[col] < arr[col+1] ) {
int temp = arr[col];
arr[col] = arr[col+1];
arr[col+1] = temp;
}
}
}
for ( int i=0; i<arr.length; i++ ) {
System.out.print(arr[i]+" ");
}
}
}
选择排序
public class MyDemo01{
public static void main(String [] args) {
//选择
int [] arr={8,4,2,1,23,344,12};
for ( int row=0; row<arr.length-1; row++ ) {
int last=arr.length-1-row;//最后坐标
int max=0;//初始第一个是数是最高的
for ( int col=1; col<arr.length-row; col++ ) {
if ( arr[max] > arr[col] ) {
max=col;
}
}
//一轮结束,两数交换
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]+" ");
}
}
}
插入排序
public class MyDemo02{
public static void main(String [] args) {
//插入
int [] arr={8,4,2,1,23,344,12};
for ( int i=0; i<arr.length-1; i++ ) {
int curr=arr[i+1];//获取你要判断的数
for ( int j=i; j>=0; j-- ) {
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]+" ");
}
}
}
希尔排序
public class MyDemo03{
public static void main(String [] args) {
int [] arr={8,4,2,1,23,344,12};
//分组插入
//首先计算步长 arr.length/2 步长为3 [8,1,12] [4,23] [2,344]
//小组排序 [1,8,12] [4,23] [2,344]==>[1,4,2,8,23,344,12]
//重新计算新步长 原步长/2 步长为1 ==>
//计算步长 每次步长缩短一半 直到步长为1 就结束
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 && arr[j]<value; j-=jump ) {
arr[j+jump]=arr[j];
}
arr[j+jump]=value;
}
}
for ( int i=0; i<arr.length; i++ ) {
System.out.print(arr[i]+" ");
}
}
}