您的位置:首页 > 编程语言 > Java开发

java简单的排序算法复习(冒泡、快速)

2013-04-17 21:19 246 查看
冒泡排序:即简单的从序列的一端开始两两交换,交换n-1次,第一轮结束,第二轮用同样的方法,但是次数是n-2次

View Code

public class BubbleSort{
public static void main(String[] srg){
int[] array = {55,66,33,45,78,23,90,2,56};
BubbleSort bs = new BubbleSort();
bs.bbsort(array);//调用冒泡排序方法,升序

System.out.print("排序结果为: ");
for(int k=0;k<array.length;k++){
System.out.print(" " + array[k]+ " ");
}
}

private void bbsort(int[] array){
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
swap(array,j);
}
}
}

}

private void swap(int[] array,int j){
int temp = 0;
temp = array[j];
array[j] =  array[j+1];
array[j+1] = temp;
}
}


以上是升序的冒泡。



实验开始的时候swap()方法一开始传入的不是array的引用导致排序实拍!

快速排序:

这里讲的很清楚:原文地址:http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html

void quick_sort(int s[], int l, int r)
{
if (l < r)
{
//Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
int i = l, j = r, x = s[l];
while (i < j)
{
while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
j--;
if(i < j)
s[i++] = s[j];

while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
i++;
if(i < j)
s[j--] = s[i];
}
s[i] = x;
quick_sort(s, l, i - 1); // 递归调用
quick_sort(s, i + 1, r);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐