public class Demo07 { public static void main(String[] args) { int[] arr = {52,46,74,85,26,55,47,69}; qsort(arr,0,arr.length-1); } public static void qsort(int[] arr, int start, int end){ //判断排序范围是否符合要求 if(start >= end ){ System.out.println(start +" "+end); return; } int pivot = start;//基准数下标 int i = start; int j = end; while(i < j) { //先找对向的 while (i < j && j >= 0 && arr[j] > arr[pivot]) {//从后向前找比pivot值小的数的下标 j--; } //再找自己这半边 while (i < j && i < arr.length) { if (arr[i] > arr[pivot]) {//从前向后找比pivot值大的数的下标 break; } i++; } if (i < j) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } //交换 int t = arr[j]; arr[j] = arr[pivot]; arr[pivot] = t; System.out.println(j+" "+Arrays.toString(arr)); //arr[j] ==>52 qsort(arr,start,j-1);//递归调用 qsort(arr,j+1,end); } }
时间: 2024-02-14 18:27:55 浏览: 82
这是一个使用快速排序算法对数组进行排序的Java代码示例。在该示例中,定义了一个名为Demo07的公共类,其中包含了一个主函数main。在主函数中,定义了一个整型数组arr,并初始化了一组整数。
在qsort函数中,首先判断排序范围是否符合要求,即start是否大于等于end。如果满足条件,则直接返回。接下来,定义了基准数的下标pivot,并初始化了两个指针i和j,分别指向排序范围的起始位置和结束位置。
然后,通过两个while循环,分别从后向前找到比基准数小的数的下标j,以及从前向后找到比基准数大的数的下标i。如果i小于j,则交换arr[i]和arr[j]的值。
循环结束后,将基准数与arr[j]进行交换,使得基准数放置在正确的位置上。然后,通过递归调用qsort函数,对基准数左右两侧的子数组进行排序。
最后,打印排序后的数组结果。
请注意,该示例中的快速排序算法是以递归方式实现的。通过不断分割和排序子数组,最终实现整个数组的排序。
相关问题
这段代码最终会输出什么public class Demo7 { public static void main(String[] args) { int [] arr= new int[5]; int sum=0; Arrays.fill(arr, 3); for(int x:arr) { sum=sum+x; } System.out.println(sum); } }
代码最终会输出15。
代码首先创建了一个长度为5的int类型数组arr,并将数组中所有元素赋值为3,然后使用增强for循环遍历数组中的每个元素,并将每个元素的值加到sum变量中。由于数组中每个元素的值都是3,因此循环结束后sum变量的值为15,最终输出15。
帮我解释一下这段代码public class Demo04 { public static void main(String[] args) { int[] arr = {22, 24, 76, 12, 21,33}; //调用获取最大值的方法,用变量接收返回值 int max = getMax(arr); //把结果输出在控制台 System.out.println(max); } public static int getMax(int[] arr) { int max = arr[0]; for (int i = 1; i < arr.length; i++) { if (max < arr[i]) { max = arr[i]; } } return max; } }
这段代码是一个 Java 程序,它定义了一个名为 Demo04 的类,其中有一个静态方法 getMax,用于返回一个整型数组中最大的元素。在 main 方法中,它创建了一个整型数组 arr,包含了一些元素。然后它调用 getMax 方法,并将结果赋值给变量 max,最后将 max 的值输出到控制台。具体来说,getMax 方法使用一个 for 循环来遍历整个数组,每次比较当前元素是否大于之前找到的最大值,如果是,则将最大值更新为当前元素。最后返回最大值。
阅读全文