if data_set[mid] == value: return mid elif data_set[mid] > value: high = mid - 1 else: low = mid + 1 print(bin_search(data_set,22)) 2、冒泡排序 def bubble_sort(li): for i in range(len(li)-1): exchange = False for j in range(len(li)-i-1): if li[j] > li[j+1...
分析:从上面的原理可以看出,与冒泡排序不同,选择排序每排完一轮都把最小的元素移到了最左面,然后下一轮排序的比较次数比上一轮减少一次,即第i轮排序需要比较N-i次。因此,和冒泡排序一样,N个数据比较大小,需要排序N-1轮,第i轮排序需要比较N-i次。 (3)编码思路: 需要两次循环,第一层循环i表示每轮指针指向...
_quick_sort(li, 0, len(li)-1) 2.冒泡排序 理解的关键点在于左半部分是有序区。 冒泡作为最简单的排序算法之一,面试的时候万不得已(其他的都记不住了),还是不要写。写个快排能好多了。 import random class Solution(object): """ 冒泡排序 """ @staticmethod def bubble_sort(li): for i in ran...
/** 冒泡 */publicstaticvoidbober(int[]array){intlength=array.length;for(inti=0;i<length-1;i++){/** 每两个比较一次,总次数是 length-1 */for(intj=0;j<length-1-i;j++){// 每次总有一个最大的找出 -iif(array[j]>array[j+1]){inttemp=array[j];array[j]=array[j+1];array[j+1...
快速排序作为交换排序的一种,在排序界的影响力毋庸置疑,我们C语言中用的qsort,C++中用的sort,底层的排序方式都是快速排序。相比于同为交换排序的冒泡,其效率和性能就要差的多了,本篇博客就是要重点介绍快速排序的实现,以及其代码和效率的优化。 话不多说,开始我们今天的内容。
插入、选择、冒泡的实现思路最简单,时间复杂度都是n²,空间复杂度都是1。其中冒泡和插入是稳定的,且最好情况时间复杂度是n;选择排序不稳定且最好情况时间复杂度也要n²。 快排和归并都是分而治之思想,而且需要用递归实现。时间复杂度都是nlogn,只有非常极端的情况下快排的时间复杂度会退化为n²。快排不稳...
冒泡排序O(n^2) 冒泡排序比较任何两个相邻的项,如果第一个比第二个大,则交换它们。元素项向上移动至正确的顺序,就好像气泡升至表面一样,冒泡排序因此得名。 function bubbleSort(array) { let length = array.length for (let i = 0; i < length; i++) { //控制了在数组中经过多少轮排序 ...