冒泡排序
public class BubbleSort {
?public? static void sort(int[] data, int n) {
??int sortedNum = 0;
??int index;
??while (sortedNum < n) {
???for (index = 1; index < n - sortedNum; index++) {
????if (data[index - 1] > data[index]) {
?????int tmp;
?????tmp = data[index - 1];
?????data[index - 1] = data[index];
?????data[index] = tmp;
????}
???}
???sortedNum++;
??}
?}
}
選擇排序
public class SelectSort {
?public static void sort(int[] data, int n) {
??int sortedNum = 0;
??int index;
??int maxIndex = 0;
??while (sortedNum < n) {
???for (index = 1; index < n - sortedNum - 1; index++) {
????if (data[maxIndex] < data[index]) {
?????maxIndex = index;
????}
???}
???int tmp;
???tmp = data[maxIndex];
???data[maxIndex] = data[n - sortedNum - 1];
???data[n - sortedNum - 1] = tmp;
???sortedNum++;
??}
?}
}
插入排序
public class InsertSort {
?public static void sort(int[] data, int n) {
??int sortedNum = 1;
??int index;
??while (sortedNum < n) {
???int tmp = data[sortedNum];
???for (index = sortedNum; index > 0; index--) {
????if (tmp < data[index - 1]) {
?????data[index] = data[index - 1];
????} else {
?????break;
????}
???}
???//插入的他的位置
???//index就是找TMP的位置
???data[index] = tmp;
???sortedNum++;
???
???for(int i=0;i<n;i++){
????System.out.print(data[i]+",");
???}
???System.out.println("");
??}
?}
}
快速排序
public class QuickSort {
?public static void sort(int[] data, int n) {
??quickSortRescursive(data, 0, n - 1);
?}
?private static void quickSortRescursive(int[] data, int left, int right) {
??int pos;
??if (left >= right)
???return;
??pos = getPos(data, left, right);
??// 排左邊的
??quickSortRescursive(data, left, pos - 1);
??quickSortRescursive(data, pos + 1, right);
?}
?private static int getPos(int[] data, int left, int right) {
??// 想左邊移動(dòng)
??while (true) {
???//遇到右邊的大就忽略,并且縮小右邊范圍
???while (left < right && data[left] < data[right])
????right--;
???
???//遇到左邊的大就往右邊換
???if (left < right)
????swap(data, left++, right);
???else
????return left;
//???遇到右邊的大就忽略,并且左邊縮小范圍
???while (left < right && data[left] < data[right])
????left++;
???if (left < right)
??? //遇到左邊的大就往右邊換
????swap(data, left, right--);
???// return left;
???else
????return right;
???// return 0;
??}
?}
?private static void swap(int[] data, int i, int j) {
??int tmp = data[i];
??data[i] = data[j];
??data[j] = tmp;
?}
}
posted on 2006-05-25 15:07
小小程序程序員混口飯吃 閱讀(375)
評(píng)論(0) 編輯 收藏 所屬分類:
java