常用排序與演算法 1

2021-10-23 14:45:31 字數 1191 閱讀 9285

部分****於網路,標註在函式上方

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...