您的位置:首页 > 其它

简单的几种排序方法

2011-12-14 17:12 274 查看
排序方法
最坏时间复杂度
最好时间复杂度
平均时间复杂度
直接插入排序
O(n*n)
O(n)
O(n*n)
简单选择排序
O(n*n)
O(n*n)
O(n*n)
冒泡排序
O(n*n)
O(n)
O(n*n)
快速排序
O(n*n)
O(nlog2n)
O(nlog2n)
堆排序
O(nlog2n)
O(nlog2n)
O(nlog2n)
归并排序
O(nlog2n)
O(nlog2n)
O(nlog2n)
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
直接插入排序实例:
void insert_sort(int r[],int rlong)
{
int i,j,temp;
for(i=2;i<rlong;i++)
{
temp=r[i];
for(j=i;j>0;j--)
{
if(temp<r[j-1])
{
r[j]=r[j-1];
}else
{
break;
}
}
r[j]=temp;
}
[align=left] [/align]
[align=left]简单选择排序实例:[/align]
void select_srot(int r[], int n)

{

int i,j,ktemp;

for(i=0;i<n;i++)

{

k=i;

for(j=i+1;i<n;j++)

{

if(a[k]>a[j])

{

k=j;

}

}

if(k!=i)

{

temp=a[k];

a[k]=a[i];

a[i]=temp;

}

}

}
[align=left] [/align]
[align=left] [/align]
[align=left]冒泡排序实例:[/align]
void bubbl_sort(int r[], int n)

{

int i,j,temp;

for(i=0;i<n;i++)

{

for(j=i;j<n-i;j++)

{

if(a[j]>a[j+1])

{

temp=a[j];

a[i]=a[j];

a[j]=temp;

}

}

}

}
[align=left] [/align]
[align=left]快速排序实例:[/align]
void quick_sort(int r[],int first,int end)

{

int i=first,j=end,temp=r[first];

while(i<j)

{

while(i<j&&r[j]>=temp) j--;

r[i]=r[j];

while(i<j&&r[i]<=temp) i++;

r[j]=r[i];

}

e[i]=temp;

if(first<i-1)

quick_sort(r,first,i-1);

if(end>i+1)

quick_sort(r,i+1,end);

}
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: