选择排序&插入排序&冒泡排序&快速排序算法实现
来源:互联网 发布:淘宝淘客微信群推广 编辑:程序博客网 时间:2024/05/16 01:19
#include<iostream.h>#include <stdio.h>//===========//排序算法////排序算法的稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,//若经过排序,这些记录的相对次序保持不变,即在原序列中,//ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。// 稳定性 时间 空间 适用情况//1.选择 不稳定 O(n2) O(1) n较小时,对稳定性不作要求时宜用选择排序//2.插入 稳定 O(n2) O(1) 速度较慢,但参加排序的序列局部或整体有序时;n值较小,要求稳定//3.冒泡 稳定 O(n2) O(1) 速度较慢,但参加排序的序列局部或整体有序时;n值较小,要求稳定//4.快速 不稳定 O(nlog2n) O(1) 不适合有序序列;当n较大时,关键字元素比较随机,对稳定性没要求//选择排序void selectSort(int a[],int n){if(n<=0)return;int tmp,k;for(int i=0;i<n-1;i++){tmp=a[i];k=i;int j=i+1;while(j<=n-1){if(a[j]<tmp){tmp=a[j];k=j;}elsej++;}if(k!=i){a[k]=a[i];a[i]=tmp;}}}//插入排序void insertSort(int a[],int n){if(n<=0)return;for(int i=1;i<=n-1;i++){int tmp=a[i];for(int j=i-1;j>=0;j--){if(tmp<a[j]){a[j+1]=a[j];}else{break;}}a[j+1]=tmp;}}//冒泡排序void bubbleSort(int a[],int n){if(n<=0)return;int flag=0;for(int i=n-1;i>0;i--){flag=0;for(int j=0;j<i;j++){if(a[j]>a[j+1]){int tmp=a[j];a[j]=a[j+1];a[j+1]=tmp;flag=1;}if(flag==0)break;}}}//快速排序void quickSort(int a[],int s,int t){//判断参数if(s<0 || t<0)return;if(s > t)return;int i=s+1;int j=t;int x=a[s];while(i<=j){while(a[i]<=x && i<=j) i++;while(a[j]>=x && i<=j) j--;if(i<j){int tmp=a[i];a[i]=a[j];a[j]=tmp;i++;j--;}}if(s!=j){a[s]=a[j];a[j]=x;}if(s<j-1)quickSort(a,s,j-1);if(j+1<t)quickSort(a,j+1,t);}void output(int a[],int n){if(n<=0){cout<<endl;return;}for(int i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl;}//========测试用例========void Test1(){cout<<"测试用例1"<<endl;int a[]={2,4,6,3,8};int n=5;output(a,5);//selectSort(a,5);//insertSort(a,n);//bubbleSort(a,n);quickSort(a,0,n-1);output(a,5);}//数组中为1个元素void Test2(){cout<<"测试用例2"<<endl;int a[]={2};int n=1;output(a,n);//selectSort(a,n);//insertSort(a,n);//bubbleSort(a,n);quickSort(a,0,n-1);output(a,n);}void Test3(){cout<<"测试用例3"<<endl;int a[]={2};int n=0;output(a,n);//selectSort(a,n);//insertSort(a,n);//bubbleSort(a,n);quickSort(a,0,n-1);output(a,n);}void main(){Test1();Test2();Test3();}
0 0
- 选择排序&插入排序&冒泡排序&快速排序算法实现
- java实现冒泡排序,插入排序,选择排序,快速排序
- python 实现插入排序,冒泡排序,快速排序,选择排序
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- 排序算法详解(Go语言实现):冒泡排序/选择排序/快速排序/插入排序
- #.java实现排序算法:插入排序、选择排序、冒泡排序
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- java实现快速排序、插入排序、选择排序、冒泡排序算法
- java实现快速排序、插入排序、选择排序、冒泡排序算法
- 排序算法---基础算法(冒泡排序,快速排序,选择排序,直接插入排序,桶排序)
- 【算法】插入排序/冒泡排序/选择排序
- 《算法》选择排序、插入排序、冒泡排序
- Java排序算法(冒泡排序、选择排序、插入排序、反数组排序、快速排序)
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序...)
- 插入排序、冒泡排序、选择排序、快速排序、堆排序、归并排序算法比较
- Java排序算法(冒泡排序、选择排序、插入排序、反数组排序、快速排序)例子
- Unity3d 简单的按照路径移动物体!
- 我的第一个iphone app出生过程
- 写给C语言新手的话
- Python程序的执行原理
- uva 10041 Vito's Family_贪心
- 选择排序&插入排序&冒泡排序&快速排序算法实现
- 那些年,我读过的技术书(Java中篇)
- Android 2.2.2到Android 4.2.2源码下载地址
- PHP数组的Hash冲突实例
- MATLAB sort函数应用——求一个矩阵前L个最大值及其在矩阵中的位置
- python Django框架的配置,以及用django搭建一个blog
- POJ - 2513 Colored Sticks
- Mongodb 的ORM框架 Morphia 之 Query接口
- Cavas绘图移动游戏背景呈现前进效果(雷电战机一)