冒泡,选择,插入,时间复杂度O(n2)算法感悟(此博文属于对于排序过程有大概了解的同学)
来源:互联网 发布:vb自定义数据类型 编辑:程序博客网 时间:2024/04/30 03:07
冒泡,选择,插入,时间复杂度O(n2)算法感悟(此博文对于排序过程有大概了解的同学具体学习以及进阶)
**1. 冒泡排序** 冒泡排序思路(由小到大排序):
1.以123451为例
2.先确定排序的个数n,由个数可得外层循环的次数为n-1,当前比较次数为i
3.内层循环次数m由外层循环n控制,随着大数冒泡到数组末尾,内层循环的次数也随之减少,n-1-i
开始:1—2—3—4—5—1
第一次:1—2—3—4—1—5
第二次: 1—2—3—1—4—5
第三次: 1—2—1—3—4—5
第四次: 1—1—2—3—4—5
第五次(最终结果):1—1—2—3—4—5
代码核心:
for(int i=0;i<a.length-1;i++){
for(int j=0;j<a.length-1-i;j++){
if(a[j]>a[j+1]){
int temp=a[j+1];
a[j+1]=a[j];
a[j]=temp; } } }
**2. 选择排序**
选择排序思路(由小到大):
1.以123451为例:
2.选择排序,选择数组中键值a[i]。
3.a[i]前半部分是有序数组,所以只需排序数组后半部分即可(只要a[i]在任何位置,它的前半部分都是有序的)。前面括号内的语句是选择排序的核心原理。
4.排序a[i]后半部分, 只需要找出后半部分最小值,将其数组位置保存num中,而后和a[i]交换排序。
5.过程: 选择a[0]位键值开始排序
开始:1—2—3—4—5—1
第一次:1—2—3—4—5—1
第二次: 1—1—3—4—5—2
第三次: 1—1—2—4—5—3
第四次: 1—1—2—3—5—4
第五次(最终结果):1—1—2—3—4—5
核心代码:
int num=0;
int temp=a[0];
for(int i=0;i<a.length;i++){
int temp=a[i];
for(int j=i+1;j<a.length;j++){
if(a[j]<temp){
num=j;
temp=a[j]; }
int tem=a[i];
a[i]=a[num];
a[num]=tem;
} }
思考问题:1、为什么冒泡排序外层控制和选择排序外层控制的条件不一样?
**3. 插入排序**
插入排序思路(由小到大):
1.以123451为例:
2.插入排序,是将待排数字插入有序数组中的排序方法。
3.实现过程:
开始:1—2—3—4—5—1
第一次:1—2—3—4—5—1
第二次: 1—2—3—4—5—1
第三次: 1—2—3—4—5—1
第四次: 1—2—3—4—5—1
第五次(最终结果):1—1—2—3—4—5
核心代码:
for(int i=0;i<n;i++){
for(int j=i;j>0;j--){
if(A[j]<A[j-1]){
temp=A[j-1];
A[j-1]=A[j];
A[j]=temp; } } }
2、思考冒泡和插入排序的区别?
- 冒泡,选择,插入,时间复杂度O(n2)算法感悟(此博文属于对于排序过程有大概了解的同学)
- 复杂度为O(n2)的选择排序
- 【排序】时间复杂度为O(N^2)的排序——冒泡、选择和插入排序
- O(N2)的三种排序-- 冒泡、选择、插入(java代码)
- 复杂度为O(n2)的选择排序(1)
- 复杂度为O(n2)的选择排序(1)
- 算法时间复杂度Θ(n2)与 O(n2)
- c语言排序算法总结 选择 插入 冒泡 希尔 快速 堆排序 稳定性 时间复杂度 空间复杂度
- 项目3的程序1——复杂度是O(n2)的选择排序程序
- 冒泡排序优化算法(复杂度是n2)
- 关于快速排序和插入排序最坏时间复杂度为O(nlogn)的算法
- 内排序中3种复杂度为(n^2)的算法-----插入、冒泡、选择
- 关于几个复杂度为N^N的排序算法-冒泡,插入,选择(C++实现)
- Excel 取两页中相同的数据项算法一 时间复杂度O(n2)
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- 冒泡算法的时间复杂度为什么是O*2
- 冒泡-选择-插入排序算法的实现
- 时间空间复杂度 冒泡 选择 快速排序
- jquery关于移动端的点击事件解析
- 下载一个应用到SD卡然后启动系统的安装程序
- NYOJ15:括号匹配(二)(区间dp)
- NYOJ 题目108 士兵杀敌(一)
- Compensating-Transaction模式
- 冒泡,选择,插入,时间复杂度O(n2)算法感悟(此博文属于对于排序过程有大概了解的同学)
- Android中常见的内存泄露分析
- JavaScript: Introduction to JavaScript
- rdd转换为DataFrame
- 欢迎使用CSDN-markdown编辑器
- 海龟绘图-字符串
- Android编程之微信SDK分享功能过程步骤详细分析
- 网络流24题2 太空飞行计划问题
- ubuntu下Odoo10开发环境配置