排序算法
来源:互联网 发布:windows关闭端口 编辑:程序博客网 时间:2024/05/16 04:44
/***********************
1 插入排序:选择元素从一端开始比较,被比较元素后移或前移
2 选择排序:找出符合当前排序顺序位置的元素的下标,再交换元素
3 冒泡排序:
4 归并排序:将两个已经排好顺序的序列归并为一个有序序列,外层、中层、内层共同参数:StrDst、StrSrc
外层:确定两个已经排好顺序序列 len,并保证最终有序序在StrDst中
中层:根据外层提供的len来将0-n划分为若干分序列,并在每次划分后调用内层将相邻序列排序
内层:根据中层提供的相距len的序列下标,进行归并排序
**********************/
一 简单排序算法1 插入排序
先选择元素,再找到插入位置
找排序位置同时,空出排序位置
O(n2)
#define MAX 10int arry[MAX+1];int n;void resort(){ int i,j,NewInput; for(i=1;i<n;i++) { arry[i]=scanf("%d",&NewInput); } for(i=1;i<n;i++) { arry[0]=arry[i]; j=i-1; while(arry[0]<arry[j]) { arry[j+1]=arry[j]; j--; } arry[j+1]=arry[0]; }}
2 选择排序
先选择位置,再选择插入元素
每次只需移动一次位置
#define MAX 10int arry[MAX+1]void resort(){ int i,j,k,m; for(i=0;i<MAX;i++) { arry[i]=scanf("%d",&m); } for(i=0;i<MAX;i++) { k=i; for(j=i+1;J++;j<MAX) { if(arry[i]>arry[j]) k=j; } if(k!=i) { arry[MAX+1]=arry[i]; arry[i]=arry[k]; arry[k]=arry[MAX+1]; } }}
3 冒泡排序
O(n2)
二 复杂排序算法
/*归并排序*/#define MAX int n;int ArrySor[MAX],ArryDst[MAX];/*内层算法*/void resort1(int ArrySor[],ArryDst[],int low,int mid,int high){int i=low,j=mid,k=low;while((i<mid)&&(j<high)){if(ArrySor[i]<ArryDst[j]) ArryDst[k++]=ArrySor[i++];else ArryDst[k++]=ArrySor[j++];}if(i<mid)ArryOut[k++]=ArryIn[i++];if(j<high)ArryOut[k++]=ArryIn[j++];}/*中层算法*/void resort2(int ArrySOr[],int ArryDst[],int length){int i=0,j;while((i+2*length-1)<n){resort1(ArrySor[],ArryDst[],i,i+length,i+2*length);i+=2*length;}if((i+length)<n)resort1(ArrySor[],ArryDst[],i,i+length,n);elsefor(j=i;j<n;j++)ArryDst[j]=ArrySor[j];}/*外层算法*/void resot3(){int length=1;while(length<n){resort2(ArrySor,ArryDst,length); length*=2;resort2(ArryDst,ArryDst,length); length*=2;}}
1 归并排序
内层算法
中层算法
外层算法
2 快速排序算法
void resort(int low,int high){if(low>=high)return;int i,j;i=low,j=high;arry[MAX+1]=arry[i];while(i<j){while((arry[j]>arry[MAX+1])&&(i<j))j--;if(arry[j]<arry[MAX+1])arry[i++]=arry[j];while((arry[i]<arry[MAX+1])&&(i<j))i++;if(arry[i]>arry[MAX+1])arry[j--]=arry[MAX+1];}arry[i]=arry[MAX+1];if(low<i-1)resort(low,i-1);if(i+1<high)resort(i+1,high);}
0 0
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 在linux下使用PPPOE程序拨号连接小区宽带xDSL的方法
- 工作这么多年了,却一直没有什么积累
- 操作系统、数据库和网络01(数据库SQL安装)
- 写在考试之后
- JavaSE----基础语法(方法)
- 排序算法
- JS Math 对象的方法
- 在cocos2d-js-v3.0 中使用cocostudio UI的正确方式
- 第八届河南省ACM省赛 - G - Interference Signal
- 提示框第三方库 MBProgressHUD
- 使用Markdown编辑器写博客(方便查找)
- [LeetCode]Length of Last Word
- 第三方平台
- Android学习之广播机制BroadcastReceiver