排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2023-06-30
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。
插入排序:
package org.rut.util.algorithm.support;
import org.rut.util.algorithm.SortUtil;
/**
* @author treeroot
* @since 2006-2-2
* @version 1.0
*/
public class InsertSort implements SortUtil.Sort
/* (non-Javadoc)
* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
*/
public void sort(int[] data)
int temp;
for(int i=1;i0)&&(data[j]2;i/=2)
for(int j=0;j1) 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);
SortUtil.swap(data,l,r);
while(l0)
int j=stack[top--];
int i=stack[top--];
pivotIndex=(i+j)/2;
pivot=data[pivotIndex];
SortUtil.swap(data,pivotIndex,j);
//partition
l=i-1;
r=j;
do
while(data[++l]pivot));
SortUtil.swap(data,l,r);
while(lTHRESHOLD)
stack[++top]=i;
stack[++top]=l-1;
if((j-l)>THRESHOLD)
stack[++top]=l+1;
stack[++top]=j;
//new InsertSort().sort(data);
insertSort(data);
/**
* @param data
*/
private void insertSort(int[] data)
int temp;
for(int i=1;i0)&&(data[j]