各种排序方法总结
来源:互联网 发布:淘宝网找工作 编辑:程序博客网 时间:2024/06/03 05:07
排序方法
平均情况
最好情况
最坏情况
辅助空间
稳定性
冒泡排序
O(n2)
O(n)
O(n2)
O(1)
稳定
简单选择排序
O(n2)
O(n2)
O(n2)
O(1)
稳定
直接插入排序
O(n2)
O(n)
O(n2)
O(1)
稳定
希尔排序
O(nlogn)~O(n2)
O(n13)
O(n2)
O(1)
不稳定
堆排序
O(nlogn)
O(nlogn)
O(nlogn)
O(1)
不稳定
归并排序
O(nlogn)
O(nlogn)
O(nlogn)
O(n)
稳定
快速排序
O(nlogn)
O(nlogn)
O(n2)
O(nlogn)~O(n)
不稳定
1.区分选择排序法和冒泡排序法虽然选择排序法和冒泡排序法都是采用的两个for循环来完成比较,但是核心的思想还是有一些不同的。
先提出两种方法的源代码
冒泡法:
int main(){int i,j,t,a[10];printf("请输入10个数字:\n");for (i=0;i<10;i++){scanf("%5d",&a[i]);}for (i=0;i<10;i++)for (j=0;j<9-i;j++)if (a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("正确的顺序是:\n");for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");return 0;}
选择排序算法:
int main(){int i,j,t,a[10];printf("请输入10个数字:\n");for (i=0;i<10;i++){scanf("%5d",&a[i]);}for (i=0;i<10;i++)for (j=i;j<10;j++)if (a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}printf("正确的顺序是:\n");for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");return 0;}
由上面的代码可以看出,冒泡法的思想是从序列的的一个元素开始,将该元素与剩下的元素依次比较。选择排序是将循环中的元素与相邻的下一个元素比较,从而得到正确的序列。
0 0
- 各种排序方法总结
- 各种排序方法总结
- 各种排序方法总结
- 各种排序方法总结
- 各种排序方法总结
- 各种排序方法总结
- 各种排序方法总结
- 各种排序方法总结
- 各种排序方法总结
- 各种数组排序方法总结(Java)
- 各种排序方法级复杂度总结
- 数据结构之排序:排序基本概念和各种排序方法总结
- 各种排序算法总结
- 各种排序算法总结
- 各种排序算法总结
- 各种排序算法总结
- 各种排序算法总结
- 各种排序算法总结
- mybatis 入门到精通(八) mybatis 分页
- VIM显示utf-8乱码
- HDU4474
- 设计模式六大原则(1):单一职责原则SRP(Single Responsibility Principle)
- The connection to adb is down, and a severe error has occured.
- 各种排序方法总结
- linux线程属性
- ocx开发经验
- php.ini 中的short_open_tag和asp_tags
- android 布局:两端对齐中间填充
- MyEclipse的快捷键
- jQuery、Ajax、PHP、Json的一个综合例子
- javascript性能提升——减少访问DOM的次数
- 迅雷近几年笔试题及其分析