【C/C++】排序算法

选择排序

选择排序是最简单最常用的一种排序算法。这里介绍的是简单选择排序
选择排序详解

#include<cstdio>
#define N 5
int main(void)
{
    
    
	int a[N]={
    
    12,3,13,45,4};
	int i,j,k,temp;
	for(i=0;i<N;i++)
	{
    
    
		k=i;
		for(j=i+1;j<N;j++)
		{
    
    
			if(a[j]<a[k])
			k=j;//记录最小的下标 
		}
		temp=a[i];
		a[i]=a[k];
		a[k]=temp;
	}
	for(i=0;i<5;i++)
	{
    
    
		printf("%d ",a[i]);
	}
	return 0;
}

由上述可知总的复杂度为O(n2)。

插入排序

这里介绍的是最直观的直接插入排序

插入排序详解

#include<cstdio>
#define N 5
int main(void)
{
    
    
	int a[N]={
    
    12,3,13,45,4};
	int i,j,temp;
	for(i=1;i<N;i++)
	{
    
    
		temp=a[i];//temp临时存放a[i] 
		j=i;
		while(j>0&&temp<a[j-1])//只要temp小于前一个元素a[j-1] 
		{
    
    //把a[j-1]后移一位至a[j] 
			a[j]=a[j-1];
			j--;
		}
		a[j]=temp;
	}
	for(i=0;i<5;i++)
	{
    
    
		printf("%d ",a[i]);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/114596428