排序

#include"stdio.h"
#define PI 3.14159

1.插入。

#include "stdafx.h"
void r(int *a,int n) ;

int _tmain(int argc, _TCHAR* argv[])
{
	int n=5,i,a[30];
	for(i=0;i<n;i++)
	{
		scanf_s("%d",&a[i]);
	}
		r(a,n);
		for(i=0;i<n;i++)
		{
		printf("%d\t",a[i]);
		}
	return 0;
}

void r(int a[],int n) 
{
int i,j,temp; 
for(i=1;i<n;i++) 
{ 
	temp=a[i];
	j=i-1; 
	while(j>=0&&temp<a[j]) 
   { 
	   a[j+1]=a[j]; 
	   j--; 
	} 
	a[j+1]=temp; 
}
}



2.快速(适合大量)

<#include "stdafx.h"
void quick(int a[],int i,int j);
int _tmain(int argc, _TCHAR* argv[])
{
	int n=10,i,a[30],b=0,c=n-1;
	for(i=0;i<n;i++)
	{
		scanf_s("%d",&a[i]);
	}
	quick(a,b,c);
		for(i=0;i<n;i++)
		{
		printf("%d\t",a[i]);
		}
	return 0;
}


void quick(int a[],int i,int j) 

{ 

int m,n,temp; 

int k; 

m=i; 

n=j; 

k=a[(i+j)/2]; /*选取的参照*/ 

do { 

while(a[m]<k&&m<j) m++; /* 从左到右找比k大的元素*/ 

while(a[n]>k&&n>i) n--; /* 从右到左找比k小的元素*/ 

if(m<=n) { /*若找到且满足条件,则交换*/ 

temp=a[m]; 

a[m]=a[n]; 

a[n]=temp; 

m++; 

n--; 

} 

}while(m<=n); 

if(m<j) quick(a,m,j); /*运用递归*/ 

if(n>i) quick(a,i,n); 

} 




3.选择

void choise(int a[],int n) 

{ 
	int i,j,k,temp; 
	for(i=0;i<n-1;i++) 
	{
		k=i;                    /*给记号赋值*/ 
		for(j=i+1;j<n;j++) 
			if(a[k]>a[j]) k=j; /*是k总是指向最小元素*/ 
		    if(i!=k)           /*当k!=i是才交换,否则a[i]即为最小*/ 
			{ 
				temp=a[i]; 
				a[i]=a[k]; 
				a[k]=temp;
			} 
	} 
} 


4.冒泡

void bubble(int a[],int n) /*定义两个参数:数组首地址与数组大小*/ 

{ 
	int i,j,temp; 
	for(i=0;i<n-1;i++) 
		for(j=i+1;j<n;j++) /*注意循环的上下限*/ 
			if(a[i]>a[j]) 
			{ 
				temp=a[i]; 
				a[i]=a[j]; 
				a[j]=temp; 
			} 
} 


5.shell法

void shell(int a[],int n) 
{ 
int i,j,k,x; 
k=n/2; /*间距值*/ 
while(k>=1) { 
for(i=k;i<n;i++) { 
x=a[i]; 
j=i-k; 
while(j>=0&&x<a[j]) { 
a[j+k]=a[j]; 
j-=k; 
} 
a[j+k]=x; 
} 
k/=2; /*缩小间距值*/ 
} 
} 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值