部分****於網路,標註在函式上方
public class sorthelper
}int tmp = inputs[i];
inputs[i] = inputs[max];
inputs[max] = tmp;
}return inputs;
}//o(n*logn)
//該文章**理解容易
public static int quicksort(int array)
sort(array, 0, len - 1);
return array;
}public static void sort(int array, int left, int right)
// base中存放基準數
int base = array[left];
int i = left, j = right;
while(i != j)
// 再從左往右邊找,直到找到比base值大的數
while(array[i] <= base && i < j)
// 上面的迴圈結束表示找到了位置或者(i>=j)了,交換兩個數在陣列中的位置
if(i < j)
}// 將基準數放到中間的位置(基準數歸位)
array[left] = array[i];
array[i] = base;
// 遞迴,繼續向基準的左右兩邊執行和上面同樣的操作
// i的索引處為上面已確定好的基準值的位置,無需再處理
sort(array, left, i - 1);
sort(array, i + 1, right);
}//歸併排序
//**
//演算法導論闡述理解:一幅牌分成兩副牌,分到不能再分。兩幅牌再比大小合併。
//o(nlogn),空間複雜度是:o(n)
public static int dividesort(int arr)
public static void merge(int arr,int low,int mid,int high,int tmp)else
}//若左邊序列還有剩餘,則將其全部拷貝進tmp中
while(j <= mid)
while(k <= high)
for(int t=0;t常用排序與演算法(2)計畫:
紅黑樹、二叉搜尋樹
常用排序演算法 1 插入排序
插入演算法 基本插入 把要排序的數列分層兩部分 第一部分包含了數列除最後乙個元素外的所有元素,而第二部分僅包含數列的最後乙個元素,再把這個最後元素插入到此刻已經是有序的第一部分裡的正確位置,保證插入後數列的有序性。時間複雜度最好為o n 最壞o n 2 平均o n 2 空間複雜度o 1 插入排序包括...
常用的 查詢演算法與排序演算法
順序查詢 從列表第乙個元素開始,順序進行搜尋,直到找到為止。二分查詢 從有序列表的候選區data 0 n 開始,通過對待查詢的值與候選區中間值的比較,可以使候選區減少一半。li 1,2,3,4,5,6,7,8,9 val 5 defsearch li,val low 0 high len li 1 ...
排序 排序演算法1
所謂氣泡排序就是,一組資料,以遞增的順序來說明,從第乙個數data 0 開始,依次和後面的資料比較大小,如果data 0 大於當前位置上的數就和這個數交換位置並繼續和後面的數相比,如果遇到比自己大的數了,就不交換 下一次開始的位置是data 1 然後依次往後推。void myswap int num...