数据结构之排序问题(插入排序、冒泡排序、二分查找、顺序查找)

//插入排序

#include<stdio.h>
Void print(int a[],int n0);
Int main(){
Int a[10[={1,2,3,4,5,6,7,8,9,33};
Int n=sizeof(a)/sizeof(a[0]);
Int j,i,x;
for(I=1;i<n;i++){
j=I-1;
x=a[I];
while(j>=0&&a[j]>x){
a[j+1]=a[j];
J—;
}
print(a,n);
Return 0;
}
Void print(int a[],int n){
Int I;
for(I-0;i<n;i++){
printf(“%5d”,a[I]);
}
}

冒泡排序

#include<stdio.h>
int main(){
int n,k,i,j;
scanf("%d %d",&n,&k);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
int con=0;
int t;
for(i=0;i<n;i++){
for(j=0;j<n-i-1;j++){
if(a[j+1]<a[j]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
con++;
if(con==k) break;

}
for(i=0;i<n;i++){
    if(i<n-1) printf("%d ",a[i]);
    else printf("%d ",a[i]);
}
return 0;

}

二分查找:

#include<stdio.h>
int main()
{
int a[10]={2,3,56,67,88,45,6,7,8,3};
int low,high,mid = 0;
low=0;
high=(sizeof(a)/sizeof(a[0]))-1;
int b;
scanf("%d",&b);//需要查找的数字
while(low<=high){
mid=(low+high)/2;
if(b==a[mid]) break;
else if(b<a[mid]) high=mid-1;
else if (b>a[mid]) low=mid+1;
}
printf("%d",mid);
return 0;

}

//顺序查找

#include<stdio.h>
int main()
{
int a[10]={2,3,56,67,88,45,6,7,8,3};
int i;
int num;
scanf("%d",&num);
for(i=0;i<sizeof(a)/sizeof(a[0]);i++){
if(numa[i]){
printf(“YES\n”);
break;
}
}
if(i
sizeof(a)/sizeof(a[0]))
printf(“NO\n”);
return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值