冒泡排序
for (int i = 0; i <arr.length-1; i++) {
for (int j = 0,t; j < arr.length-i-1; j++) {
if(arr[j]>arr[j+1]){
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
选择排序
for (int i = 0,maxIx,maxValIx,t; i <arr.length-1; i++) {
maxIx=arr.length-1-i;
maxValIx=0;
for (int j = 1; j <= arr.length-i-1; j++) {
if(arr[j]>arr[maxValIx]){
maxValIx=j;
}
}
if(maxValIx!=maxIx){
t=arr[maxIx];
arr[maxIx]=arr[maxValIx];
arr[maxValIx]=t;
}
}
插入排序
for (int i = 1,t,j; i < arr.length; i++) {
t=arr[i];
for ( j = i-1; j>=0&&arr[j] >=t; j--) {
arr[j+1]=arr[j];
}
arr[j+1]=t;
}
希尔排序
int step=arr.length,t;
while((step=step/2)>2){
for (int i = 0; i+step < arr.length; i++) {
if(arr[i]>arr[i+step]){
t=arr[i];
arr[i]=arr[i+step];
arr[i+step]=t;
}
}
}
for (int i = 1,j; i < arr.length; i++) {
t=arr[i];
for ( j = i-1; j>=0&&arr[j] >=t; j--) {
arr[j+1]=arr[j];
}
arr[j+1]=t;
}
桶排序
final int U = 10;
int[][]bucket = new int[U][arr.length];
int[] ixs = new int[U];
for (int i=1, count,t;;i*=10) {
count = 0;
for (int j = 0; j < arr.length; j++) {
count = (t = arr[j] / i) >= 1 ? ++count : count;
bucket[t %= U][ixs[t]++] = arr[j];
}
if (count == 0) break;
for (int j = 0, ix = 0; j < bucket.length; j++) {
for (int k = 0; k < ixs[j]; k++) {
arr[ix++] = bucket[j][k];
}
}
for (int j = 0; j < ixs.length; j++) {
ixs[j] = 0;
}
}
快速排序