网站首页 > 文章中心 > 其它

用于排序的java代码

作者:小编 更新时间:2023-09-09 14:27:23 浏览量:56人看过

java冒泡排序法代码

冒泡排序是比较经典的排序算法.代码如下:

用于排序的java代码-图1

for(int i=1;iarr.length;i++){

for(int j=1;jarr.length-i;j++){

//交换位置

} ? ?

拓展资料:

原理:比较两个相邻的元素,将值大的元素交换至右端.

第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;

第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;

依次类推,每一趟比较次数-1;

用于排序的java代码-图2

......

参考资料:冒泡排序原理

请问一下java快速排序源代码

快速排序:

package org.rut.util.algorithm.support;

import org.rut.util.algorithm.SortUtil;

/**

* @author treeroot

* @version 1.0

*/

public class QuickSort implements SortUtil.Sort{

/* (non-Javadoc)

* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

public void sort(int[] data) {

quickSort(data,0,data.length-1);

}

private void quickSort(int[] data,int i,int j){

//swap

SortUtil.swap(data,pivotIndex,j);

int k=partition(data,i-1,j,data[j]);

SortUtil.swap(data,k,j);

用于排序的java代码-图3

if((k-i)1) quickSort(data,i,k-1);

if((j-k)1) quickSort(data,k+1,j);

* @param data

* @param i

* @param j

* @return

private int partition(int[] data, int l, int r,int pivot) {

do{

while(data[++l]pivot);

while((r!=0)data[--r]pivot);

SortUtil.swap(data,l,r);

while(lr);

return l;

改进后的快速排序:

public class ImprovedQuickSort implements SortUtil.Sort {

private static int THRESHOLD=10;

int[] stack=new int[MAX_STACK_SIZE];

int top=-1;

int pivot;

int pivotIndex,l,r;

stack[++top]=0;

stack[++top]=data.length-1;

while(top0){

int j=stack[top--];

int i=stack[top--];

pivot=data[pivotIndex];

//partition

l=i-1;

r=j;

while((r!=0)(data[--r]pivot));

SortUtil.swap(data,l,j);

if((l-i)THRESHOLD){

stack[++top]=i;

stack[++top]=l-1;

if((j-l)THRESHOLD){

stack[++top]=l+1;

stack[++top]=j;

//new InsertSort().sort(data);

insertSort(data);

private void insertSort(int[] data) {

int temp;

for(int i=1;idata.length;i++){

for(int j=i;(j0)(data[j]data[j-1]);j--){

SortUtil.swap(data,j,j-1);

java排序代码

求java快速排序的正确代码

一趟快速怕序的具体做法是:附设两个指针low和high,他们的初值分别为low和high,设枢轴记录的关键字为privotkey,则首先从high所指位置向前搜索找到第一个关键字小于pivotkey的记录和枢轴记录互相交换,然后从low所指向的位置起向后搜索,找到第一个关键字大于privotkey的记录和枢轴记录互相交换,重复这两步直至low==high位置.

import java.util.concurrent.Executor;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

public class 快速排序_1 {

public static void main(String[] args) throws InterruptedException {

new 快速排序_1().qSort(test, 0, test.length-1);

for(int k:test) System.out.println(k);

public void qSort(int []array,int low,int high){

if(low

int privot=partition(array,low,high);

qSort(array,low,privot-1);

qSort(array,privot+1,high);

public int partition(int [] array,int low,int high){

* 选择 low位置 作为曲轴(支点)

int pivot=array[low];

int temp=0;

* 如果 low

while(low

* 先从 high端 开始判断

while(low=pivot) high--;

* 进行 置换操作

array[low]=array[high];

low++;

* 从 low 端判断

array[high]=array[low];

high--;

array[low]=pivot;

return low;

java中排序算法代码

package temp;

import sun.misc.Sort;

* @author zengjl

* @Des java几种基本排序方法

* SortUtil:排序方法

* 关于对排序方法的选择:这告诉我们,什么时候用什么排序最好.当人们渴望先知道排在前面的是谁时,

* 我们用选择排序;当我们不断拿到新的数并想保持已有的数始终有序时,我们用插入排序;当给出的数

* 列已经比较有序,只需要小幅度的调整一下时,我们用冒泡排序.

public class SortUtil extends Sort {

* 插入排序法

* @Des 插入排序(Insertion Sort)是,每次从数列中取一个还没有取出过的数,并按照大小关系插入到已经取出的数中使得已经取出的数仍然有序.

public int[] insertSort(int[] data) {

①./11页

for (int i = 1; i data.length; i++) {

for (int j = i; (j 0) (data[j] data[j - 1]); j--) {

swap(data, j, j - 1);

return data;

* 冒泡排序法

* @Des 冒泡排序(Bubble Sort)分为若干趟进行,每一趟排序从前往后比较每两个相邻的元素的大小(所以呢一趟排序要比较n-1对位置相邻的数)并在

* 每次发现前面的那个数比紧接它后的数大时交换位置;进行足够多趟直到某一趟跑完后发现这一趟没有进行任何交换操作(最坏情况下要跑n-1趟,

* 这种情况在最小的数位于给定数列的最后面时发生).事实上,在第一趟冒泡结束后,最后面那个数肯定是最大的了,于是第二次只需要对前面n-1

* 个数排序,这又将把这n-1个数中最小的数放到整个数列的倒数第二个位置.这样下去,冒泡排序第i趟结束后后面i个数都已经到位了,第i+1趟实

* 际上只考虑前n-i个数(需要的比较次数比前面所说的n-1要小).这相当于用数学归纳法证明了冒泡排序的正确性

以上就是土嘎嘎小编为大家整理的用于排序的java代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章