資料結構排序,冒泡,快速,直接選擇,直接插入,希爾

2021-07-02 21:27:20 字數 2523 閱讀 1557

交換排序

1.氣泡排序

public class sort

/*氣泡排序*/

public void bubble(int a)    }}

}public static void main(string args) ;

sort bs = new sort();

bs.bubble(a);

for(int i=0;i}

}2.快速排序

第一步,在待排序列中選乙個基準值,一般選擇第乙個數。然後從序列最右邊開始左右兩邊交替與基準值比較,小的放前面大的放後面,直到遍歷整個序列(i=j),再將基準值放到i=j位置。

第二步,基準值左右兩邊的較小子序列和較大子串行再分別進行快速排序,使用遞迴。

public class quicksort  

list[i] = list[j];   //比中軸小的記錄移到低端  

while (i < j && list[i] < tmp)  

list[j] = list[i];   //比中軸大的記錄移到高階  

}  list[i] = tmp;              //中軸記錄到尾  

if (i - left > 1)                      //子串行長度要大於1

quicksort(list, left, i-1);        // 對低字表進行遞迴排序  

if (right - i > 1)

quicksort(list, i + 1, right);       //對高字表進行遞迴排序,左邊子串行排序完成後,才開始右邊子串行的排序,且遞迴函式中i值和right值仍為最初劃分時的值  

}/*** @param args

*/   public static void main(string args) ;  

quicksort qs=new quicksort();  

qs.quicksort(list,0,9);  

for(int i=0;i            system.out.print(list[i]+" ");  

}  system.out.println();  

}  }快速排序演算法裡的partition函式

快速排序演算法裡的partition函式用來解決這樣乙個問題:給定乙個陣列arr和陣列中任意乙個元素a,重排陣列使得a左邊都小於它,右邊都不小於它。

// arr為陣列,start、end分別為陣列第乙個元素和最後乙個元素的索引

// povitindex為陣列中任意選中的數的索引

/**先將選中數放到最後,然後變數i依次遍歷陣列與選中數比較,storeindex為比選中數小的數的個數,比它小的都與大的交換/

1int partition(int arr, int start, int end, int

pivotindex)212

}13swap(arr[storeindex], arr[end]);

14return

storeindex;

15 }

選擇排序

1.堆排序

2.直接選擇排序

假設乙個序列有n個元素,那麼比較n-1趟,每趟選出最小的元素,放在第一位該趟的第一位。

public class selectsort

}if(min!=i) }} 

/*** @param args

*/public static void main(string args) ;  

selectsort as = new selectsort();

as.selectsort(list);

for(int i=0;i

插入排序

1直接插入排序

每一趟將乙個待排序的資料元素插入。最開始認為第乙個元素已排序,從第二個開始插入。插入時從已排序的陣列後面開始比較,較大的數就往後移,直到找到合適的位置插入。

public class insertsort

list[j+1] = insert; //本趟結束後將待插數放入

}   

}public static void main(string args) ;  

insertsort as = new insertsort();

as.insertsort(list);

for(int i=0;i

2.希爾排序

將無序陣列分割為若干個子串行,子串行不是逐段分割的,而是相隔特定的增量的子串行,對各個子串行進行插入排序;然後再選擇乙個更小的增量,再將陣列分割為多個子串行進行排序......最後選擇增量為1,即使用直接插入排序,使最終陣列成為有序。

public class shellsort

}  }public static void main(string args) ;  

shellsort as = new shellsort();

as.shellsort(list);

for(int i=0;i         

}  }

資料結構 直接選擇排序

直接選擇排序和直接插入排序有點類似,因為在整個排序過程中都將資料分為有序區和無序區,不同的是直接插入排序是將無序區的第乙個元素直接插入到有序區中合適位置以形成乙個更大的有序區,剛開始認為有序區的長度為1,而直接選擇排序是從無序區選乙個最小的元素直接放到有序區的最後,剛開始認為它的有序區長度為0。設待...

資料結構 直接選擇排序

直接選擇排序 straight select sorting 也是一種簡單的排序方法,它的基本思想是 第一次從r 0 r n 1 中選取最小值,與r 0 交換,第二次從r 1 r n 1 中選取最小值,與r 1 交換,第i次從r i 1 r n 1 中選取最小值,與r i 1 交換,第n 1次從r ...

資料結構 選擇排序(直接選擇 堆排序)

1 選擇排序的基本思想 每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置 或末尾 直到全部待排序的資料元素排完。選擇排序可分為直接選擇排序 堆排序。2 直接選擇排序 2.1 演算法步驟 1.在元素集合array i array n 1 中選擇關鍵碼最大 小 的資料元素 2...