1、冒泡排序:每次比较相邻的两个变量,如果左边的大于右边的,则将左边的变量和右边的变量调换顺序,这样一次循环下来就会将最大的值“冒泡”到最右端。
package org.lazyzhong.test;
public class MyTest {
public static void main(String[] args) {
int[] a={3,5,2,1,6,4,9};
for(int i=a.length-1;i>1;i--){
for(int j=0;j<i;j++){
if(a[j]>a[j+1]){
int tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
}
2、选择排序:每次都在无序部分进行最小值的比较,找到他们中的最小值,然后插入到有序部分的后面。
package org.lazyzhong.test;
public class MyTest {
public static void main(String[] args) {
int[] a={3,5,2,1,6,4,9};
for(int i=0;i<a.length-1;i++){
int min=i;
for(int j=i;j<a.length;j++){
if(a[j]<a[min]){
min=j;
}
}
int tmp=a[i];
a[i]=a[min];
a[min]=tmp;
}
}
}
3、插入排序:插入排序首先假定最左侧的一部分是有序的,每次循环都将无序部分的第一个变量插入到有序的部分中。
package org.lazyzhong.test;
public class MyTest {
public static void main(String[] args) {
int[] a={3,5,2,1,6,4,9};
for(int i=1;i<a.length;i++){
int tmp=a[i];
int j=i;
while(j>0 && a[j-1]>=tmp){
a[j]=a[j-1];
j--;
}
a[j]=tmp;
}
}
}