public
class
arraysort
/**
* 與冒泡相似,每一趟找到自i到末端最小的數的index,然後與i交換
* 一趟只需一次交換,所以比冒泡快
*/
private
static
void
xuanze
(intx,
intoff
,int
len)
swap(x
,i,min
);
}
}
/**
* i從左至右,i定住時將自i到末端最小的數移至i處,完成一趟,以此類推直至i到最右端
* 通過不停交換完成,時間消耗較多
*/
private
static
void
maopao
(intx,
intoff
,int
len)
}
}
/**
* 快速排序法:首先任意選取乙個資料作為關鍵資料,然後將所有比它小的數都放到它前面,
* 所有比它大的數都放到它後面,這個過程稱為一趟快速排序。之後遞迴。
* 演算法:
* 1)i從左到右找比key大的,i移至此處;j從右到左找比key小的,j移至此處
* 2)若i
* 3)一趟完成之後i如果未到最右端,遞迴右端;j如果未到達最左端,遞迴左端
* 此演算法可改進,請參詳jdk原始碼。
*/
private
static
void
kuaisu
(intx,
intoff
,int
len)
swap(x
,i,j
);
system
.out
.printf
("swap %d %d:%s/n",i
,j,arrays
.tostring(x
));
}
if(
i <
right
)
kuaisu(x
,i +1
,right -i
);
if(
j >
left
)
kuaisu(x
,left,j
-left
);
}
/**
* 求數值處於中間的下標
*/
private
static
intmed3
(intx,
inta
,intb,
intc
)
/** 在陣列x中交換a b位置 */
private
static
void
swap
(intx,
inta
,int
b)
public
static
void
main
(string
args
)
;
system
.out
.println
("begin..."
+arrays
.tostring(x
));
/*
maopao(x, 0, x.length);
xuanze(x, 0, x.length);
charu(x, 0, x.length);
*/
kuaisu(x
,0,x
.length
);
system
.out
.println
("final..."
+arrays
.tostring(x
));
}
}
java常見排序演算法
package algorithms public class arraydemo int max getmax arr arr sort2 arr int start 0 int end arr.length 1 sort3 arr,start,end print arr public stati...
Java常見排序演算法
氣泡排序 氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。public static vo...
java常見排序演算法
1.直接插入排序 public static void insertsort int array array j 1 temp system.out.println arrays.tostring array insertsort 2.希爾排序 希爾排序,也稱遞減增量排序演算法,是插入排序的一種更高...