package practice.ch07;
import source.ch07.recordnode;
/** * @author snail van
* */
public class sort
// 找到了插入位置,將其插入
arr[index] = temp;
} return arr;
} /** 2.希爾排序 */
public int shellsort(int d, int arr)
arr[j + dk] = temp;
}} return arr;
} /** 3.氣泡排序 */
public int bubblesort(int arr)
}} return arr;
} /** 4.快速排序 */
public int quicksort(int arr)
// 輔助方法: 遞迴呼叫
private int qsort(int arr, int low, int high)
return arr;
} // 輔助方法:一次快排
private int partition(int arr, int i, int j)
// 把arr[j]放到左邊i的位置,i++; j位置空出來了
if (i < j)
// 從左到右找到乙個比pivot大的arr[i]
while (i < j && pivot > arr[i])
// 把arr[i]放到左邊j的位置,j--; i位置空出來了
if (i < j)
} arr[i] = pivot; // 此時 i==j 將pivot賦給arr[i]
return i;
} /** 5.選擇排序 */
public int selectionsort(int arr)
}temp = arr[i];
arr[i] = arr[minindex];
arr[minindex] = temp;
} return arr;
} /** 6.堆排序 */
public int heapsort(int arr)
// 每趟將最小值交換到後面,再調整成堆
for (int i = len - 1; i > 0; i--)
return arr;
} // 輔助方法:調整堆
private void sift(int arr, int low, int high)
if (temp > arr[j]) else
} arr[i] = temp; }
/** 7. 歸併排序 */
public int mergesort(int arr)
return arr;
}private void mergepass(int arr, int order, int s, int n)
if (p + s - 1 < n - 1) else }}
private void merge(int arr, int order, int h, int m, int t) else
}while (i <= m)
while (j <= t)
}public void show(string s, int arr)
system.out.println();
} public static void main(string args) ;
sort s = new sort();
s.show("未排序前:", arr);
// s.show("插入排序:",s.insertionsort(arr));
// int d = ;
// s.show("希爾排序:", s.shellsort(d, arr));
// s.show("氣泡排序:", s.bubblesort(arr));
// s.show("快速排序:", s.quicksort(arr));
// s.show("選擇排序:", s.selectionsort(arr));
// s.show("堆排序:", s.heapsort(arr));
s.show("歸併排序:", s.mergesort(arr));
}}
排序演算法介紹
排序也稱排序演算法 sort algorithm 排序是將一組資料,依指定的順序進行排列的過程。1 內部排序 指將需要處理的所有資料都載入到內部儲存器 記憶體 中進行排序。2 外部排序法 資料量過大,無法全部載入到記憶體中,需要借助外部儲存 檔案等 進行排序。1 穩定 如果 a 原本在 b 前面,而...
排序演算法介紹
排序也成排序演算法 sort algorithm 排序是將一組資料,依指定的順序進行排列的過程。排序的分類 1內部排序 需要處理的所有資料都載入到內部儲存器中進行排序 2外部排序 資料量過大,無法全部載入到記憶體中,需要借助外部儲存進行排序 常見的排序演算法 時間頻度 乙個演算法中的語句執行次數稱為...
排序演算法 N個正整數排序
高德納在 計算機程式設計藝術 裡對演算法歸納為以下幾點 輸入 乙個演算法必須有零或以上的輸入量 輸出 乙個演算法應有乙個或以上的輸出量 明確性 演算法的描述必須無歧義,實際執行結果是確定的 有限性 必須在有限個步驟內結束 有效性 又稱可行性,能夠被執行者實現 如果想詳細研究演算法推薦 資料結構與演算...