選擇排序和插入排序
-
public class Sort{
-
public static void main(String[] args){
-
Integer[] data={3,2,9,8,7,10};
-
BaseSort s=new Insertion();
-
-
s.sort(data);
-
-
System.out.println(s.isSorted(data));
- }
-
}
-
-
//插入排序
-
class Insertion extends BaseSort{
-
-
@Override
-
void sort(Comparable[] data) {
-
int length=data.length;
-
for(int i=1;i<length;i++){
-
this.show(data);
-
for(int j=i;j>0 && less(data[j],data[j-1]);j--)
-
{
-
exch(data,j,j-1);
-
}
-
}
-
}
-
}
-
-
//選擇排序
-
class Selection extends BaseSort{
-
@Override
-
void sort(Comparable[] data) {
-
int length=data.length;
-
for(int i=0;i<length;i++){
-
-
this.show(data);
-
int min=i;
-
for(int j=i+1;j<length;j++)
-
{
-
if(less(data[j],data[min])) {
-
min = j;
-
}
-
}
-
exch(data,i,min);
-
}
-
}
-
}
-
-
-
abstract class BaseSort {
-
abstract void sort(Comparable[] data);
-
//比較
-
public boolean less(Comparable v,Comparable w){
-
return v.compareTo(w)<0;
-
}
-
-
//交換
-
public void exch(Comparable[] data,int i,int j){
-
Comparable t=data[i];
-
data[i]=data[j];
-
data[j]=t;
-
}
-
-
//列印
-
public void show(Comparable[] data){
-
for(int i=0;i<data.length;i++){
-
System.out.print(data[i]+" ");
-
}
-
System.out.println("");
-
}
-
-
//驗證
-
public boolean isSorted(Comparable[] data){
-
for(int i=1;i< data.length;i++){
-
if(less(data[i],data[i-1]) )
-
return false;
-
}
-
return true;
-
}
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2124415/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 選擇排序和插入排序(C++實現)排序C++
- (一)氣泡排序、選擇排序、插入排序排序
- 圖解選擇排序與插入排序圖解排序
- JAVA小練習氣泡排序,選擇排序和插入排序Java排序
- php實現 氣泡排序,插入排序,選擇排序PHP排序
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- PHP 常見4種排序 氣泡排序、選擇排序、插入排序、快速排序PHP排序
- 選擇排序和快速排序排序
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 圖形化排序演算法比較:快速排序、插入排序、選擇排序、氣泡排序排序演算法
- 選擇排序和氣泡排序排序
- 氣泡排序和選擇排序排序
- 反射,hashlib模組,正則匹配,冒泡,選擇,插入排序反射排序
- java氣泡排序-選擇排序-插入排序-使用API中文文件直接呼叫函式Java排序API函式
- 【小小前端】前端排序演算法第一期(氣泡排序、選擇排序、插入排序)前端排序演算法
- 排序(1)--插入排序和交換排序排序
- 氣泡排序和選擇排序詳解排序
- 氣泡排序和選擇排序流程圖排序流程圖
- Python演算法之---冒泡,選擇,插入排序演算法Python演算法排序
- 排序(2)--選擇排序,歸併排序和基數排序排序
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 選擇排序排序
- 排序之選擇排序排序
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- 插入排序排序排序
- 演算法導論學習之三:排序之C語言實現:選擇排序,插入排序,歸併排序演算法排序C語言
- 關於js陣列的六種演算法---水桶排序,氣泡排序,選擇排序,快速排序,插入排序,希爾排序的理解。JS陣列演算法排序
- 選擇法和冒泡法排序介面排序
- [java]插入排序及折半插入排序Java排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- js選擇排序JS排序
- Java 選擇排序Java排序
- [java]選擇排序Java排序
- 01選擇排序排序
- 選擇排序法排序
- go 實現氣泡排序和插入排序Go排序
- 排序之插入排序排序
- 演算法學習之選擇排序和堆排序:演算法排序