1、冒泡排序:每次比较相邻的两个变量,如果左边的大于右边的,则将左边的变量和右边的变量调换顺序,这样一次循环下来就会将最大的值“冒泡”到最右端。
class="java">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; } } }
?
?