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

Java实现交换排序 之 冒泡排序和快速排序

2017-02-22 14:17 555 查看

Java实现交换排序 之 冒泡排序和快速排序

冒泡排序

import java.util.Arrays;

/**
* 冒泡排序算法
*/

/**
* @author 16026
*
*/
public class BubbleSort {
/**
* 冒泡排序
*
* @param array
* 输入一个无序整型数组
*/
static void bubbleSort(int[] array) {
int len = array.length;
for (int i = 1; i < len; i++) {
for (int j = 0; j < len - i; j++) {
if (array[j] > array[j + 1]) {
//交换次序
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}

public static void main(String [] args){
int [] array = {89,58,68,47,58,9,59,58};
bubbleSort(array);
System.out.println(Arrays.toString(array));
}
}


快速排序

import java.util.Arrays;

/**
* 快速排序算法
*/

/**
* @author 16026
*
*/
public class QuickSort {
/**
*
* @param array
*            整形数组
* @param low
*            数组起始坐标
* @param high
*            数组结尾坐标
*/
public static void sort(int[] array, int low, int high) {

int i = low;
int j = high;
if (i > j)
return;
// 选定第一个元素作为支点
int index = array[low];

//开始扫描
while (i < j) {
//从右往左寻找比支点小的元素
while (i < j && index <= array[j])
j--;
if (i < j) {
array[i++] = array[j];
}

//从左往右寻找比支点大的元素
while (i < j && index >= array[i])
i++;
if (i < j) {
array[j--] = array[i];
}
}
//至此,一次循环结束,下面对分支进行递归循环

//支点记录到位
array[i] = index;

sort(array,low,i-1);//对左分支进行递归
sort(array,i+1,high);//对右分支进行递归

}

public static void main(String [] args){
int [] array = {78,89,58,46,52,512,8,56,58};
sort(array,0,array.length-1);
System.out.println(Arrays.toString(array));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐