java简单的排序算法复习(冒泡、快速)
冒泡排序:即简单的从序列的一端开始两两交换,交换n-1次,第一轮结束,第二轮用同样的方法,但是次数是n-2次
View Code
1 public class BubbleSort{ 2 public static void main(String[] srg){ 3 int[] array = {55,66,33,45,78,23,90,2,56}; 4 BubbleSort bs = new BubbleSort(); 5 bs.bbsort(array);//调用冒泡排序方法,升序 6 7 System.out.print("排序结果为: "); 8 for(int k=0;k<array.length;k++){ 9 System.out.print(" " + array[k]+ " "); 10 } 11 } 12 13 private void bbsort(int[] array){ 14 for(int i=0;i<array.length-1;i++){ 15 for(int j=0;j<array.length-1-i;j++){ 16 if(array[j]>array[j+1]){ 17 swap(array,j); 18 } 19 } 20 } 21 22 } 23 24 private void swap(int[] array,int j){ 25 int temp = 0; 26 temp = array[j]; 27 array[j] = array[j+1]; 28 array[j+1] = temp; 29 } 30 }
以上是升序的冒泡。
实验开始的时候swap()方法一开始传入的不是array的引用导致排序实拍!
快速排序:
这里讲的很清楚:原文地址:http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html
1 void quick_sort(int s[], int l, int r) 2 { 3 if (l < r) 4 { 5 //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 6 int i = l, j = r, x = s[l]; 7 while (i < j) 8 { 9 while(i < j && s[j] >= x) // 从右向左找第一个小于x的数 10 j--; 11 if(i < j) 12 s[i++] = s[j]; 13 14 while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数 15 i++; 16 if(i < j) 17 s[j--] = s[i]; 18 } 19 s[i] = x; 20 quick_sort(s, l, i - 1); // 递归调用 21 quick_sort(s, i + 1, r); 22 } 23 }