#include<iostream>
#include<math.h>
#include<set>
#include<algorithm>
#include<iterator>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
using namespace std;
/*
单行输出数组
*/
void disp_array(int r[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<r[i]<<" ";
}
cout<<endl;
}
/*
直接插入法排序
算法时间复杂度O(n^2),空间复杂度O(1)
扫描每一个数都要将该数位置前的下标移位
*/
void SInsertSort(int R[],int n)
{
int i,j,tmp;
for(i=1;i<n;i++)
{
tmp=R[i];
j=i-1;
while(j>=0&&tmp<R[j])
{
R[j+1]=R[j];
j--;
}
R[j+1]=tmp;
}
}
/*
折半插入排序
折半插入排序所需附加储存空间和直接插入排序相同,从时间上
比较,折半插入排序仅减少比较次数,而纪录的移动次数不变,时间
复杂度为O(n^2)
*/
void BInsertSort(int R[],int n)
{
int i,j,low,high,m,tmp;
for(i=1;i<n;i++)
{
low=0;high=i-1;
while(low<=high)
{
m=(low+high)/2;
if(R[i]>R[m]) low=m+1;
else high=m-1;
}
tmp=R[i];
for(j=i-1;j>=high+1;j--) R[j+1]=R[j];
R[high+1]=tmp;
}
}
/*
希尔排序
希尔排序的平均时间复杂度为O(nlog2n)
空间复杂度为O(1),相同的数排序前后位置可能不同,因此希尔排序是不稳定的。
希尔排序的算法性能依赖于增量gap的选择,下述这种选择效率很低
*/
void ShellSort(int R[],int n)
{
int i,j,gap,tmp,k;
for(gap=n/2;gap>
各种内排序算法源码汇总--c语言
最新推荐文章于 2021-11-14 18:35:49 发布
本文汇总了多种内部排序算法的C语言实现,包括快速排序、归并排序、插入排序、选择排序等,详细解析每种算法的步骤和原理,帮助读者深入理解数据结构与算法。
摘要由CSDN通过智能技术生成