「java快速算法」java算法教程

博主:adminadmin 2022-12-08 04:00:07 61

本篇文章给大家谈谈java快速算法,以及java算法教程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用JAVA实现快速排序算法?

本人特地给你编的代码

亲测

public class QuickSort {

public static int Partition(int a[],int p,int r){

int x=a[r-1];

int i=p-1;

int temp;

for(int j=p;j=r-1;j++){

if(a[j-1]=x){

// swap(a[j-1],a[i-1]);

i++;

temp=a[j-1];

a[j-1]=a[i-1];

a[i-1]=temp;

}

}

//swap(a[r-1,a[i+1-1]);

temp=a[r-1];

a[r-1]=a[i+1-1];

a[i+1-1]=temp;

return i+1;

}

public static void QuickSort(int a[],int p,int r){

if(pr){

int q=Partition(a,p,r);

QuickSort(a,p,q-1);

QuickSort(a,q+1,r);

}

}

public static void main(String[] stra){

int a[]={23,53,77,36,84,76,93,13,45,23};

QuickSort(a,1,10);

for (int i=1;i=10;i++)

System.out.println(a[i-1]);

}

}

java快速排序算法枢纽元的问题

package Utils.Sort; /** * 快速排序,要求待排序的数组必须实现 Comparable 接口 */ public class QuickSort implements SortStrategy { private static final int CUTOFF = 3; // 当元素数大于此值时采用快速排序 /** * 利用快速排序算法对数组 obj 进行排序, 要求待排序的数组必须实现了 Comparable 接口 */ public void sort(Comparable[] obj) { if (obj == null) { throw new NullPointerException("The argument can not be null!"); } quickSort(obj, 0, obj.length - 1); } /** * 对数组 obj 快速排序 *@param obj 待排序的数组 *@param left 数组的下界 *@param right 数组的上界 */ private void quickSort(Comparable[] obj, int left, int right) { if (left + CUTOFF right) { SortStrategy ss = new ChooseSort(); ss.sort(obj); } else { // 找出枢轴点,并将它放在数组最后面的位置 pivot(obj, left, right); int i = left, j = right - 1; Comparable tmp = null; while (true) { // 将 i, j 分别移到大于 / 小于枢纽值的位置 // 因为数组的第一个和倒数第二个元素分别小于和大于枢纽元, 所以不会发生数组越界 while (obj[++i].compareTo(obj[right - 1]) 0) {} while (obj[--j].compareTo(obj[right - 1]) 0) {} // 交换 if (i j) { tmp = obj[i]; obj[i] = obj[j]; obj[j] = tmp; } else break; } // 将枢纽值与 i 指向的值交换 tmp = obj[i]; obj[i] = obj[right - 1]; obj[right - 1] = tmp; // 对枢纽值左侧和右侧数组继续进行快速排序 quickSort(obj, left, i - 1); quickSort(obj, i + 1, right); } } /** * 在数组 obj 中选取枢纽元,选取方法为取数组第一个、 中间一个、最后一个元素中中间的一个。 将枢纽元置于倒数第二个位置, 三个中最大的放在数组最后一个位置,最小的放在第一个位置 *@param obj 要选择枢纽元的数组 *@param left 数组的下界 *@param right 数组的上界 */ private void pivot(Comparable[] obj, int left, int right) { int center = (left + right) / 2; Comparable tmp = null; if (obj[left].compareTo(obj[ center]) 0) { tmp = obj[left]; obj[left] = obj[center]; obj[center] = tmp; } if (obj[left].compareTo(obj[ right]) 0) { tmp = obj[left]; obj[left] = obj[right]; obj[right] = tmp; } if (obj[center].compareTo(obj[ right]) 0) { tmp = obj[center]; obj[center] = obj[right]; obj[center] = tmp; } // 将枢纽元置于数组的倒数第二个 tmp = obj[center]; obj[center] = obj[right - 1]; obj[right - 1] = tmp; } }

java中快速排序的算法举个例子

package person.test;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

import java.util.Random;

/**

* class name: RapidSort

* description: Java快速排序法:数组和集合

* @author Jr

*

*/

public class RapidSort {

private Random ran = new Random(); // 声明一个全局变量ran,用来随机生成整数

/**

* method name: sortArray

* description: 对数组的快速排序,只能用于int[]类型的数组

* @return

*/

private void sortArray() {

int[] array = new int[10]; // 声明数组长度为10

for (int i = 0 ; i array.length; i++) {

array[i] = ran.nextInt(10) + 1; // 数组赋值

}

Arrays.sort(array);

System.out.println(Arrays.toString(array));

}

/**

* method name: sortList

* description: 对集合的快速排序,可以用于ListObject类型数组,

* 隐含意思就是对所有类型数组都适用

* @return

*/

private void sortList() {

ListInteger list = new ArrayListInteger();

for (int i = 0 ; i 10; i++) {

list.add(ran.nextInt(10) + 1); // 给集合赋10个值

}

Collections.sort(list);

System.out.println(list);

}

public static void main(String[] args) {

RapidSort rs = new RapidSort();

rs.sortArray();

rs.sortList();

}

}

Java的数组的几种经典算法

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。

快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。

冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。

选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。

插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。下面我就将他们的实现方法一一详解供大家参考。

1利用Arrays带有的排序方法快速排序

public class Test2{ public static void main(String[] args){ int[] a={5,4,2,4,9,1}; Arrays.sort(a); //进行排序 for(int i: a){ System.out.print(i); } } }

2冒泡排序算法

public static int[] bubbleSort(int[] args){//冒泡排序算法 for(int i=0;iargs.length-1;i++){ for(int j=i+1;jargs.length;j++){ if (args[i]args[j]){ int temp=args[i]; args[i]=args[j]; args[j]=temp; } } } return args; }

3选择排序算法

public static int[] selectSort(int[] args){//选择排序算法 for (int i=0;iargs.length-1 ;i++ ){ int min=i; for (int j=i+1;jargs.length ;j++ ){ if (args[min]args[j]){ min=j; } } if (min!=i){ int temp=args[i]; args[i]=args[min]; args[min]=temp; } } return args; }

4插入排序算法

public static int[] insertSort(int[] args){//插入排序算法 for(int i=1;iargs.length;i++){ for(int j=i;j0;j--){ if (args[j]args[j-1]){ int temp=args[j-1]; args[j-1]=args[j]; args[j]=temp; }else break; } } return args; }

关于java快速算法和java算法教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-08,除非注明,否则均为首码项目网原创文章,转载请注明出处。