java的排序一共有多少钟?实现的详细代码是什么?
排序算法是数据结构的东西 和语言是没关系的
冒泡:[code="java"]public class BubbleSort {
public static void bubbleSort(int[] array) {
int length = array.length - 1;
for (int out = length; out > 0; out--) {
for (int in = 0; in < out; in++) {
if (array[in] > array[in + 1]) {
int s = array[in];
array[in] = array[in + 1];
array[in + 1] = s;
}
}
}
}
}[/code]
插入:[code="java"]public class InsertSort {
public static void sort(int[]array){
int length=array.length;
for(int out=1;out int temp=array[out];
int in=out;
while(in>0&&array[in-1]>temp){
array[in]=array[in-1];
--in;
}
array[in]=temp;
}
}
}[/code]
选择:[code="java"]public class SelectSort {
public static void sort(int[]array){
for(int out=0;out<array.length-1;out++){
int min=out;
for(int in=out+1;in<array.length;in++){
if(array[in]<array[min]){
min=in;
}
}
int t =array[out];
array[out]=array[min];
array[min]=t;
}
}
}
[/code]
希尔:[code="java"]public class SheelSort {
private int[] hs;
private int[] a;
public void sort(){
for(int h:hs){
for(int i=h;i<a.length;i++){
int in=i;
int inValue=a[i];
while(in-h>-1&&a[in-h]>inValue){
a[in]=a[in-h];
in=in-h;
}
a[in]=inValue;
}
}
}
public int[] getHs() {
return hs;
}
public void setHs(int[] hs) {
this.hs = hs;
}
public int[] getA() {
return a;
}
public void setA(int[] a) {
this.a = a;
}
}[/code]
快速:[code="java"]public class SpeedSort {
private int[] a;
public void sort() {
int begin = 0;
int end = a.length - 1;
quickSort(begin, end);
for (int i : a) {
System.out.print(i + " ");
}
}
private void quickSort(int begin, int end) {
if (begin >= end) {
} else {
int pivot = a[end];
int result = getPivot(begin, end, pivot);
quickSort(begin, result - 1);
quickSort(result + 1, end);
}
}
private int getPivot(int begin, int end, int pivot) {
begin = begin - 1;
int o = end;
while (true) {
while (a[++begin] < pivot) {
}
while (end > 0 && a[--end] > pivot) {
}
if (begin >= end) {
break;
} else {
swap(begin, end);
}
}
swap(begin, o);
return begin;
}
private void swap(int begin, int end) {
int t = a[begin];
a[begin] = a[end];
a[end] = t;
}
public int[] getA() {
return a;
}
public void setA(int[] a) {
this.a = a;
}[/code]
自己写的 凑合看吧
任何排序都可以
数据结构和算法中有几种java中就有几种。常用的在java.util包里面,比如TreeMap,TreeSet之类的。另外,自定义排序需要实现java.lang.Comparable接口,具体看jdk文档。还有google collections,commons collections也提供了一些排序的集合类,这个就太多了。
[quote="vieri122"]任何排序都可以[/quote]
同意!
Java类库中的主要的排序算法实现在Arrays.sort()和Collections.sort()方法中,Arrays.sort()对基本类型的排序使用快速排序,对引用类型的排序使用合并排序。Collections.sort()使用合并排序。使用合并排序是为也保证排序的稳定性。
具体代码可以参考我实现的《算法导论》中的算法:http://lifethinker.iteye.com/admin/blogs/248092
各种排序算法java实现
[url]http://blog.csdn.net/lschou520/archive/2008/10/29/3176422.aspx[/url]
每种方法都有