排序算法

一、冒泡排序

时间复杂度O(n²) 空间复杂度O(1)


代码:

#include <stdio.h>
int main(int argc, char const *argv[])
{
	int arr[10]={9,6,8,7,2,1,10,3,5,4};
	int t;
	int i,j;
	for (i = 9; i >0; i--)
	{
		for (j = 0; j < i ; ++j)
		{
			if (arr[j]>arr[j+1])
			{
				t=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=t;
			}
		}
	}
	for (i = 0; i < 10; ++i)
	{
		printf("%d\n",arr[i] );
	}
	return 0;
}

二、插入排序

时间复杂度O(n²) 空间复杂度O(1)

代码:

#include <stdio.h>
int main(void)
{   int i,j,t;
    int arr[10]={1,5,6,7,8,2,9,8,2,6};
    for(i=1;i<10;i++)
    {
        t=arr[i];
        j=i-1;
        while(j>=0&&t<arr[j])
        {
            arr[j+1]=arr[j];
            j--;
        }
        arr[j+1]=t;
    }
    for(i=0;i<10;i++)
    {
        printf("%d\n",arr[i]);
    }
    return 0;
}

三、桶排序

利用数组下进行排序

时间复杂度O(m+n)

#include <stdio.h>
int main(void)
{   int i,j,n,t;
    int arr[1001]={0};
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&t);
        arr[t]++;
    }
    for(i=0;i<1001;i++)
    {
        for(j=0;j<arr[i];j++)
        {
            printf("%d ",i);
        }
    }

    return 0;
}

阅读更多
文章标签: 排序算法
个人分类: c算法 排序
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭