黑马基础测试2

来源:互联网 发布:算法工程师是什么专业 编辑:程序博客网 时间:2024/06/02 12:52
package com.itheima;/** * 2、 请列举您了解的一些排序算法,并用Java语言实现一个效率较高的。 *  * 排序有:冒泡排序,插入排序,快速排序,选择排序 *  * @author 刘江涛 *  */public class Test2 {// 定义初始数组static int[] a = { 65, 6, 64, 241, 75, 21, 5, 31, 5, 51, 85, 18 };public static void main(String[] args) {// 打印未排序的数组for (int i = 0; i < a.length; i++) {System.out.print(a[i] + " ");}System.out.println();sort(a);// 调用排序算法// 打印排好的数组for (int i = 0; i < a.length; i++) {System.out.print(a[i] + " ");}}private static void sort(int[] a2) {if (a2.length > 0)// 检查数组长度是否为0{quickSort(a2, 0, a2.length - 1);// 调用快排方法}}// 快排方法的实现static void quickSort(int[] list, int low, int high) {if (low < high) {// 如果low下标依然小于high下标,继续递归调用int middle = getMiddle(list, low, high);// 把数组分成两部分quickSort(list, low, middle - 1);// 递归排序中轴左边quickSort(list, middle + 1, high);// 递归排序中轴右边}}// 获得中轴private static int getMiddle(int[] list, int low, int high) {int temp = list[low];// 数组的第一个作为中轴while (low < high) {while (low < high && list[high] >= temp) {// 如果high下标对应的值大于中轴的值,则执行里面语句high--;// high下标减1}// 如果high下标对应的值不再大于中轴的值,或者low已经大于highlist[low] = list[high];// 将小的移动到低端while (low < high && list[low] <= temp) {// 如果low下标对应的值小于中轴的值,则执行里面语句low++;// low下标加1}list[high] = list[low];// 将大的数据移动到高端}list[low] = temp;// 找到的中轴,小的在中轴左边,大的在中轴右边return low;// 返回中轴}}

0 0
原创粉丝点击