冒泡排序
基本思想:
大的数一点一点推到后面,最终形成排序
代码:
1 /** 2 * 冒泡排序 3 * @author wxh 4 * @version 1.0 5 * 6 */ 7 public class Demo1 { 8 9 public static void main(String[] args) {
10 int[] data = {9,2,7,19,100,97,63,208,55,78}; 11 int[] b = bubbleSort( data ); 12 System.out.println( Arrays.toString( b ) );
13 } 14 15 public static int[] bubbleSort( int[] data ) { 16 int temp = 0; 17 int n = data.length; 18 for( int i = 0; i < n; i++ ) { 19 for( int j = i + 1; j < n; j++ ) { 20 if( data[i] > data[j] ) { 21 temp = data[i]; 22 data[i] = data[j]; 23 data[j] = temp; 24 } 25 } 26 } 27 return data; 28 } 29 30 }
选择排序
基本思想:
每一次遍历都找出最小值,然后把这个值放到前面(跟冒泡相反,冒泡是找出最大值然后放到后面)
代码:
1 /** 2 * 选择排序 3 * @author wxh 4 * @version 1.0 5 * 6 */ 7 public class Demo2 { 8 9 public static void main(String[] args) { 10 11 int[] data = {9,2,7,19,100,97,63,208,55,78}; 12 int[] d = sort( data ); 13 System.out.println( Arrays.toString( d ) ); 14 15 } 16 17 private static int[] sort( int[] data ) { 18 19 int temp = 0; 20 for( int i = 0; i < data.length; i++ ) { 21 int min = i; 22 for( int j = i + 1; j < data.length; j++ ) { 23 if( data[j] < data[min] ) { //如果有小于当前最小值的数值 24 min = j; //将此关键字的下标赋值给min 25 } 26 } 27 if( min != i ) { 28 temp = data[i]; 29 data[i] = data[min]; 30 data[min] = temp; 31 } 32 } 33 return data; 34 } 35 36 }
插入排序
基本思想:
就是把当前未排序的元素插入到一个新的排序列表中。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是O(n2)。特点是简单,不需要额外的存储空间,在元素少的时候工作得好。
代码:
1 /** 2 * 插入排序 3 * @author wxh 4 * @version 1.0 5 * 6 */ 7 public class Demo3 { 8 9 public static void main(String[] args) { 10 11 int[] data = {9,2,7,19,100,97,63,208,55,78}; 12 int[] d = sort( data ); 13 System.out.println( Arrays.toString( d ) ); 14 15 } 16 17 private static int[] sort( int[] data ) { 18 int n = data.length; 19 for( int i = 1; i < n; i++ ) { 20 int flag = i; //要比较的位置 21 for( int j = i - 1; j >= 0; j-- ) { 22 if( data[j] > data[flag] ) { 23 int temp = data[j]; 24 data[j] = data[flag]; 25 data[flag] = temp; 26 flag--; //继续向前比较 27 } 28 } 29 } 30 31 return data; 32 } 33 34 }
快速排序
基本思想:
代码:

1 /** 2 * 快速排序 3 * @author wxh 4 * @version 1.0 5 * 6 */ 7 public class Demo4 { 8 9 private static final int[] data = {9,2,7,19,100,97,63,208,55,78}; 10 11 public static void main(String[] args) { 12 int[] d = sort( 0, data.length-1 );//传入数组第一个元素和最后一个元素 13 System.out.println( Arrays.toString( d ) ); 14 } 15 16 public static int[] sort( int low, int high ) { 17 if ( low < high ) { 18 int result = partition( low, high ); 19 sort( low, result - 1 ); 20 sort( result + 1, high ); 21 } 22 return data; 23 } 24 25 private static int partition( int low, int high ) { 26 int key = data[low]; 27 while ( low < high ) { 28 while ( low < high && data[high] >= key ) 29 high--; 30 data[low] = data[high]; 31 while ( low < high && data[low] <= key ) 32 low++; 33 data[high] = data[low]; 34 } 35 data[low] = key; 36 return low; 37 } 38 39 }
归并排序
基本思想:
代码: