插入排序(稳定)
void insertsort(int a[],int n)
{
int i,temp;
for(i=1;i<n;i++)
{
temp=a[i];
for(j=i-1;j>=0&&a[j]>temp;j--)
a[j+1]=a[j];
a[j+1]=temp;
}
}
平均来说插入排序算法复杂度为O(n^2)。
Shell排序(插入排序改进 不稳定)
选择排序(不稳定:出现相同数字时相对位置会改变)
void selectsort(int a[],int n)
{
int i,j,min,temp;
for(i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[min])
min=j;
}
if(min!=i)
{
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
}
二元选择排序(选择排序改进)
堆排序
冒泡排序
桶排序
桶排序可以说得上是最简单的排序算法了,但是它的使用范围非常狭窄,不过不可否认的是在其适用范围内,它的性能要比快速排序还要快上很多倍。
没错,桶排序也是一种非比较型排序算法,这也正是它能够超越快速排序的原因。
桶排序主要有以下缺陷:
1.参与排序的数组存放的必须是整数
2.数组中的最大数和最小数保持在一个合理的间距内
3.需要额外的内存空间。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!