一级a做爰片免费网站黄,小制作小发明手工简单,wordpress 增加页面,手机做炫光图头像的网站同样#xff0c;这两几乎也是被淘汰了的算法#xff0c;尽管它们是稳定的#xff0c;但是时间复杂度没人喜欢#xff0c;了解一下就好#xff0c;没啥好说的#xff0c;注意最后一句话就行了
一#xff0c;冒泡排序
1. 算法步骤
共n-1趟#xff0c;谁两敢冒泡就换了… 同样这两几乎也是被淘汰了的算法尽管它们是稳定的但是时间复杂度没人喜欢了解一下就好没啥好说的注意最后一句话就行了
一冒泡排序
1. 算法步骤
共n-1趟谁两敢冒泡就换了谁两
第一趟比较n-1次每个相邻的位置都比较一次比较两个元素大小若位置反了就交换位置一趟结束最后一个位置就是最大值降序就是最小值
第二趟比较n-2次同上最后一个元素不参与比较
第三趟比较n-1次同上最后两个元素不参与比较
……
第n-1趟比较1次同上最后n-2个元素不参与比较
一共比较累 123……n-1 (1 n-1)*(n-1) / 2 1/2 * ( n^2 - n) ,比选择排序的n^2好一点点呵然并……
2. 动图演示 3. 什么时候最快
当输入的数据已经是正序时都已经是正序了我还要你冒泡排序有何用啊。
4. 什么时候最慢
当输入的数据是反序时写一个 for 循环反序输出数据不就行了干嘛要用你冒泡排序呢我是闲的吗。
5、代码 templatetypename T void bubble_sort(T arr[], int len) {int i, j;for (i 0; i len - 1; i)for (j 0; j len - 1 - i; j)if (arr[j] arr[j 1])swap(arr[j], arr[j 1]);
}二、插入排序
1. 算法步骤
共n-1趟把每一个元素都插入到理论上原本该在的位置上去
第一趟把第一个元素看成已经排序好了的序列用第2个元素来与之比较比它大就插入到第一个后面比它小就插入到它前面 比较1次
第二趟把前2个元素看成已经排序好了的序列用第3个元素来与前面的元素逐个比较比某个比较元素大就插入到它后面比它小就继续比较再前一个若直到比第一个还小就插入到第一个的位置比较 1~2次
第三趟把前3个元素看成已经排序好了的序列用第4个元素来与前面的元素逐个比较比某个比较元素大就插入到它后面比它小就继续比较再前一个若直到比第一个还小就插入到第一个的位置比较1~3次
………………………………
第n-1趟把前n-1个元素看成已经排序好了的序列最后 1 个元素来与前面的n-1元素逐个比较比某个比较元素大就插入到它后面比它小就继续比较再前一个若直到比第一个还小就插入到第一个的位置比较1~n-1
比冒泡排序更好一点了
2. 动图演示 代码实现
void insertion_sort(int arr[],int len){for(int i1;ilen;i){int keyarr[i];int ji-1;while((j0) (keyarr[j])){arr[j1]arr[j];j--;}arr[j1]key;}
} 特别注意
之所以说只说是几乎被淘汰了而不是完全淘汰是因为这两哥们的最好情况是O(n)还都是稳定的排序方法在元素大部分都是有序的只有极个别的位置错了的情况下这两个算法的优势就来了特别是插入排序本来就是逐个插入到正确的位置上去现在大部分都是有序的这部相当于大部分都插入好了嘛就剩下极个别插入一下就完事了对吧这是其他任何排序算法都无法比拟的存在