數據結構和算法——簡單排序

簡單排序有三種,分別是冒泡排序、選擇排序和插入排序。

首先自定義一些數據和方法,待會排序算法需要用到,我都是用Java寫的。

 public static int[] data= {77, 99, 44, 55, 22, 88, 11, 66, 33};
 
 public static void main(String[] var) {
 display();
 insertSort();
 display();
 }
 
 public static void display () { //打印data[]
 for (int j=0; j

冒泡排序

冒泡排序思想:

  1. 一些人站成一排,第一個與第二個比身高,哪個高的就站第二位;第二個與第三個比身高,哪個高的就站第三位......一直進行下去,最高的那個人就站到了最後一位。
  2. 再來一遍,第一個與第二個比身高,哪個高的就站第二位.......,一直進行到最後一個的前一個為止,因為最後一個已經確定下來了。這個過程一直進行下去,直到整排有序為止。
 private static void bubbleSort() {
 int out, in;
 for (out=data.length-1; out>0; out--) {
 for (in=0; in data[in+1]) {
 swap(in, in+1);
 }
 }
 }
 }

選擇排序

選擇排序思想:

  1. 一些人站成一排,從第一個開始,用小本子把這個人的位置和身高記下來,第二個人與小本子裡的身高作比較,如果比它小,更新小本子的記錄,小本子只記身高比較矮的。第三個再與小本子比較....一直進行下去,直到最後一個與小本子比較完。這樣小本子裡的記錄就是最矮的那個人,把這個人與第一個交換一下位置就行了。
  2. 然後從第二個開始重複1步驟,直到整排有序。
 private static void selectionSort() {
 int left, right, temp;
 for (left=0; left

插入排序

插入排序思想:

  1. 一些人站成一排是無序的,但是,只看第一個人(只有一個人)是有序的部分,後面那些人是無序的。先處理第二個人,把他叫出來,他的位置就空著。
  2. 一一比較第二個人和前面那些人的身高,如果比較矮,前面那個人就往後退一格,將他自己的位置空出來。如果比較高,那麼被叫出來的那個就站在前面那個後面就行了。一直進行下去,直到他的位置確定下來之後,有序的部分就多加一人了。
  3. 再處理第三個人,與第二個處理過程一樣,然後第四個、第五個....直到最後一個,這樣有序部分一個一個增加,整排就有序了。
 private static void insertSort() {
 int in, out;
 for (out=1; out=0 && data[in]>temp) {
 data[in+1] = data[in];
 in--;
 }
 data[in+1] = temp;
 }
 }

總結

我大二上學期學完這門課,現在都忘了七七八八了,上述簡單的三種排序我都忘了怎麼寫了,得多練練手,爭取一碰到這種排序,都能在3分鐘之內完成。


分享到:


相關文章: