前言:
目前同学们对“数组打乱顺序算法怎么写”大体比较看重,小伙伴们都想要知道一些“数组打乱顺序算法怎么写”的相关文章。那么小编在网摘上收集了一些对于“数组打乱顺序算法怎么写””的相关资讯,希望大家能喜欢,看官们一起来了解一下吧!中心思想
是由冒泡排序改进而来。在待排序的 n 个记录中任取一个记录(通常取第一个记录),把该记录放入适当位置后,数据序列被此记录划分成两部分。所有关键字比该记录关键字小的记录放置在前一部分,所有比它大的记录放置在后一部分,并把该记录在这两部分的中间(称为该记录归为)。
代码实现
private int[] quickSort(int[] arr, int left, int right) { // System.out.println("left:"+ left +",right:"+ right) if (left < right) { int partitionIndex = partition(arr, left, right); // 递归调用,对分隔后的左边数组快速排序 quickSort(arr, left, partitionIndex - 1); // 递归调用,对分隔后的右边数组快速排序 quickSort(arr, partitionIndex + 1, right); } return arr;}private int partition(int[] arr, int left, int right) { // 设定基准值(pivot) int pivot = left; int index = pivot + 1; for (int i = index; i <= right; i++) { if (arr[i] < arr[pivot]) { swap(arr, i, index); index++; } } swap(arr, pivot, index - 1); return index - 1;}private void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;}时间复杂度最好的情况下:因为每次都将序列划分为两个部分(一般二分的复杂度跟log N相关),所以O(N*logN)。最坏的情况下:基本有序时,退化为冒泡排序,几乎要比较 N *N,所以 O(N*N)。稳定性
由于每次都需要和中轴元素交换,因此原来的顺序可能被打乱。(多个相同的元素),所以说,快速排序是不稳定的!
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #数组打乱顺序算法怎么写 #常见排序算法java