冒泡排序怎么输入才能只排序一个数,我感觉排一个数比完整排序都难😂

img

img

那这样呢
#include<stdio.h>
#include<math.h>
int main(void)
{
int a[500],b,n,m;
scanf("%d",&n);
for(b=0;b<n;b++)
{
scanf("%d",&a[b]);
}
for(b=n-2;b>=0;b--)
{
if(a[b]>a[b+1])
{
m=a[b+1];
a[b+1]=a[b];
a[b]=m;
}
}
for(b=0;b<n;b++)
{
printf("%d\t",a[b]);
}
printf("\n");
return 0;
}

不用排序就是取最小值
手打代码:

int main()
{
int n;
int min = 100;
cin>>n;
int a[n+5];
for(int i = 0; i < n; i++)
{
cin>>a[i];
if (a[i] < min)
{min=a[i];}
}
cout<<min<<" ";
for (int i = 0; i < n; i++)
{
if (i != n-1)
{
cout<<" ";
}
if (a[i] != min)
{
cout<<a[i];
}
}
cout<<endl;
return 0;
}

int main(void)
{
    int n=0;
    scanf("%d",&n);
    int num[1000];
    
    for(int i=0;i<n;++i)
    {
        scanf("%d",&num[i]);
    }
    
    // 找到最小值
    int min=num[0];
    for(int i=1;i<n;++i)
    {
        if(min>num[i])
            min=num[i];
    }
    
    // 将所有最小值移动到前面
    for(int i=n-1;i>=0;--i)
    {
        if(min == num[i])
        {
            for(int j=i-1;j>=0;--j)
            {
                num[j+1]=num[j];  //其他说顺序往后移动
            }
            num[0]=min;
        }
    }
    
    
    for(int i=0;i<n;++i)
    {
        printf("%d ",num[i]);
    }
    printf("\n");
    
    return 0;
}

多个

#include<stdio.h>
#define MAXSIZE 1000
int main(){
    int a[MAXSIZE];
    int len = 0,i,j,minValue=0x7fffffff,tmp=0;
    scanf("%d",&len);
    //简单选择排序变形 
    for(i=0;i<len;i++){
        scanf("%d",&a[i]);
        if(a[i]<minValue) {
            minValue = a[i];
        }
    }
    for(i=1;i<len-1;i++){
        if(a[i]!=minValue)
             continue;
        tmp = a[i];
        for(j=i-1;j>=0&&a[j]>tmp;j--){
            a[j+1] = a[j];
        }
        a[j+1] = tmp;
    }
    for(i=0;i<=len-1;i++){
        printf("%d ",a[i]);
    }
    printf("\n");
}
//7 80 70 62 90 75 62 90

img

一个


#include<stdio.h>
#define MAXSIZE 1000
int main(){
    int a[MAXSIZE] ={0};
    int len =0,i,j,minValue=0x7ffffff,index=0,tmp=0;
    scanf("%d",&len);
    //简单选择排序变形 
    for(i=0;i<len;i++){
        scanf("%d",&a[i]);
        if(a[i]<minValue) {
            minValue = a[i];
            index=i;
        }
    }
    tmp = a[index];
    for(j=index-1;j>=0&&a[j]>tmp;j--){
        a[j+1] = a[j];
    }
    a[j+1] = tmp;

    for(i=0;i<=len-1;i++){
        printf("%d ",a[i]);
    }
    printf("\n");
}
//7 80 70 62 90 75 62 90

img