冒泡排序:即简单的从序列的一端开始两两交换,交换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 }