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 }

 

posted @ 2013-04-17 21:19  拙急鸟  阅读(208)  评论(0编辑  收藏  举报