您的位置:首页 > 其它

算法之冒泡、快速排序

2017-10-16 20:58 239 查看
冒泡排序:

package BubbleSort;

import java.util.Arrays;

import SelectSort.HeapSort;

//冒泡排序
//给定的一组数据中,先从第一个记录开始依次对相邻的数据进行比较,若大,则交换
//然后与第一个数据比较的袁术再与其相邻的元素比较,换为,直到倒数第二个数与最后一个数比较后,结束第一轮
//紧接着进行第二轮,重复第一轮的操作
//直至最后一轮结束
public class bubbleSort {

public static void bubbleSort(int[] data){
for(int i = 0;i<data.length-1;i++){
for(int j = 0;j<data.length-1-i;j++){
if(data[j]>data[j+1]){
int tmp = data[j];
data[j] = data[j+1];
data[j+1] = tmp;
}
}
}
System.out.println("排序后数组:" + Arrays.toString(data));
}
public static void bubbleSort1(int[] data){
for(int i = 0;i<data.length-1;i++){
for(int j = data.length-1;j>i;j--){
if(data[j]<data[j-1]){
int tmp = data[j];
data[j] = data[j-1];
data[j-1] = tmp;
}
}
}
System.out.println("排序后数组:" + Arrays.toString(data));
}
public static void main(String[] args) {
//int[] array = {1,13,44,69,97,53,29,42,96,51,40,12,8,14,10,100};
int[] array = {49, 38, 65, 97, 76, 13, 27, 49, 78};
bubbleSort.bubbleSort1(array);
}
}

快速排序:
package QuickSort;

import java.util.Arrays;

//快速排序
//选择一个基准元素,将待排序序列分成两部分,一部分比基准元素小,一部分比基准元素大
//此时基准元素放置在合适的位置,然后将分成的两部分在进行递归排序.
public class quickSort {

public static void _quickSort(int[] data,int low,int high){
if(low<high){
int middle = getMiddle(data, low, high);
_quickSort(data, low, middle - 1);        //对低字表进行递归排序
_quickSort(data, middle + 1, high);       //对高字表进行递归排序
}
}
//将数组一分为二
public static int getMiddle(int[] data,int low,int high){
//选定一个基准数(一般为第一个元素或者最后一个元素)
int tmp = data[low];
while(low<high){
while(low<high&&tmp<=data[high]){
high--;
}
data[low] = data[high];//把比中轴小的记录放在左面
while(low<high&&tmp>=data[low]){
low++;
}
data[high] = data[low];//把比中轴小的记录放在右面
}
data[low] = tmp;//中轴记录到尾
return low;

}

public static void main(String[] args){
int data[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};
quickSort._quickSort(data, 0, data.length-1);
System.out.println("排序后数组:" + Arrays.toString(data));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: