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

排序算法的Java实现+思路(一):冒泡、快排

2017-09-18 10:33 197 查看
冒泡排序:

/**
* 冒泡排序
* 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
*/
public static void bubbleSort(int[] numbers){
int length = numbers.length;
int exchange = 0;
for (int i = 0;i< length;i++){
for (int j = i+1;j<length;j++){
if (numbers[i]>numbers[j]){
exchange = numbers[j];
numbers[j] = numbers[i];
numbers[i] = exchange;
}
}
}
}


快速排序:

/**         通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两*部分继续进行排序,直到整个序列有序。
*/
public static void quickSort(int[] numbers,int low,int high){
int start = low;
int end = high;
//取第一个值作为中轴,那么就要从最后开始比较,因为这样第一个位置可以作为覆盖位,每一次交换后都要存在一个待覆盖的位置,供下次覆盖,如果是取最后一个值作为中轴,就要从头开始比较
int temp = numbers[low];
//指向同一个退出
while (low<high){
//从后边开始比较,比中轴大就留在原位,high减一,
while (low<high&&numbers[high]>temp){
high--;
}
//找到比中轴小的了,就覆盖low位置,high位变成下一个待覆盖位
numbers[low] = numbers[high];
while (low<high&&numbers[low]<temp){
low++;
}
numbers[high] = numbers[low];
}
//将中轴放到最后一个low==high这个最后一个待覆盖位
numbers[low] = temp;
//递归调用,调整前后两边的
if (low-start>1){
quickSort(numbers,start,low-1);
}
if (end-high>1){
quickSort(numbers,high+1,end);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐