简单排序算法有偿求解,要代码

从键盘上任意输入10个数,10个数放到数组里,然后写一个排序的算法,把10个数排序后输出出来

简单冒泡排序

img

#include <stdio.h>
void prin(int t[],int n)
{
    for(int i=0; i<n; i++)
        printf("%d ",t[i]);
    printf("\n");
}
void BubbleSort(int t[],int n)
{
    for(int i=0; i<n-1; i++)
    {
        for(int j=0; j<n-1-i; j++)
        {
            if(t[j]>t[j+1])
            {
                int tem=t[j];
                t[j]=t[j+1];
                t[j+1]=tem;
            }
        }
        printf("第%d趟排序完成( %d 完成了冒泡):",i+1,t[n-1-i]);
        prin(t,n);
    }
}
int main()
{
    int n=10;
    int t[n];
    
    printf("输入数组:");
    for(int i=0;i<n;i++)
    {
        scanf("%d",&t[i]);
    } 
    printf("\n");
    BubbleSort(t,n);
    printf("\n");
    printf("排序完成后:");
    prin(t,n);
    return 0;
}

#include<stdio.h>
int main()
{
    int i, j, t;
    int arr[10];
    printf("请输入十个数:");
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
    for (j = 0; j < 9; j++)
    {
        for (i = 0; i < 9 - j; i++)
        {
            if(arr[i]>arr[i+1])
                {
                    t = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = t;
                }
        }
    }
    printf("按从小到大的顺序:");
        for (i = 0; i < 10; i++)
        {
            printf("%d ", arr[i]);
        }
    return 0;
}

你想要什么排序,冒泡、快速、堆排序、希尔排序,看你需求

#include<stdio.h>    
void main()
{

    int n[10];//定义一个大小为10的数组
    int i, j, temp;
    printf("请输入10个数据:\n");
    //从控制台获取10个数
    for(i=0;i<10;i++){
        scanf("%d",&n[i]);
    }
    for (i = 1; i <= 9; i++)//外层循环是比较的轮数,数组内有10个数,那么就应该比较10-1=9轮
    {
        for (j = 0; j <= 9 - i; j++)//内层循环比较的是当前一轮的比较次数,例如:第一轮比较9-1=8次,第二轮比较9-2=7次
        {
            if (n[j] > n[j + 1])//相邻两个数如果逆序,则交换位置
            {
                temp = n[j];
                n[j] = n[j + 1];
                n[j + 1] = temp;
            }
        }
    }
    printf("排序过后的数顺序:\n");
    for (i = 0; i < 10; i++)
    printf("%-4d", n[i]);
    printf("\n");
}

截图:

img

img

C++编程:

#include<iostream>
using namespace std;
int main()
{
    int i,j,a,b,math[10];
    for(i=0;i<10;i++)
    {
        cin>>math[i];
    }
    for(i=0;i<9;i++)
    {
        a=i;
        for(j=i+1;j<10;j++)
        {
            if(math[j]<math[i])
            {
                a=j;
                int temp;
                temp=math[a];
                math[a]=math[i];
                math[i]=temp;
            }
        }
    }
    cout<<"从小到大:";
    for(i=0;i<10;i++)
    {
        cout<<math[i];
        cout<<" ";
        
    }
    return 0;
}

如有帮助,还请采纳!谢谢!

我承认我已经尽量将这个问题复杂化来凸显我的代码量了,但还是没几行QAQ

#include <stdio.h>

#define N 10

int main()
{
    int Input[N] = {0};
    int i, j, k;
    
    printf("Input %d Number\n", (int)N);
    for (i = 0; i < N; i++)
    {
        printf("Input No.%d:", i + 1);
        scanf("%d", &Input[i]);
    }
    
    for (i = 0; i < N - 1; i++)
    {
        for (j = i + 1; j < N; j++)
        {
            if(Input[i] > Input[i + 1])
            {
                k = Input[i + 1];
                Input[i + 1] = Input[i];
                Input[i] = k;
            }
        }
    }

    printf("Resault  .oO:");
    for (i = 0; i < N; i++)
    {
        printf("%d ", Input[i]);
    }
    printf("\n");

    printf("Resault  Oo.:");
    for (i = 0; i < N; i++)
    {
        printf("%d ", Input[N - i - 1]);
    }
    printf("\n");
    return 0;
}

您可以使用C++标准库自带的排序函数——sort
例如:sort(a+1,a+n+1);
如果你想从小到大排序,可直接用下面的代码:

#include<bits/stdc++.h>
using namespace std;
const int N=10;
int a[N];
int main()
{
    int n;
    cout<<"请输入数组长度:";
    cin>>n;
    cout<<"请输入数组:";
    for(int i=1;i<=n;i++){
        cin>>a[i];
    } 
    sort(a+1,a+n+1);
    cout<<"排序完的数组:";
    for(int i=1;i<=n;i++){
        cout<<a[i]<<' ';
    }
    return 0;
}

效果:

img


如果题主想从大到小排序,可以添加个cmp子函数,如:

#include<bits/stdc++.h>
using namespace std;
const int N=10;
int a[N];
bool cmp(int x,int y){
    return x>y;
}
int main()
{
    int n;
    cout<<"请输入数组长度:";
    cin>>n;
    cout<<"请输入数组:";
    for(int i=1;i<=n;i++){
        cin>>a[i];
    } 
    sort(a+1,a+n+1,cmp);
    cout<<"排序完的数组:";
    for(int i=1;i<=n;i++){
        cout<<a[i]<<' ';
    }
    return 0;
}

效果:

img


这样就能使数组从小到大排序
上面的两个代码的排序不局限于只能输入10个数哦,可以自己调整。
希望能对题主您有帮助,可不可以稍稍采纳一下?谢谢喽~🤣😀🙏

选择排序法:

// 用选择排序对十个数字进行排序  数字有键盘输入
void choseSort(int* a, int length) {
    int min= 0;
    for (int i = 0; i < length-1; i++) {//总共有n-1趟排序
        //1.找出未排序数组中最小的元素
        min = i;
        for (int j = i + 1; j < length-1; j++) {
            if (a[min] > a[j]) {
                min = j;
            }
        }
        //2.将找到的最小元素与未排序数组的第一个元素交换
        int tmp = a[i];
        a[i] = a[min];
        a[min] = tmp;
    }
    
}
int main()
{
    int num[10];
    printf("请输入十个待排数字(整数):\n");
    for (int i = 0; i < 10; i++) {
        scanf("%d", &num[i]);
    }
    printf("排序前的序列如下:\n");
    for (int i = 0; i < 10; i++) {
        printf("%2d ", num[i]);
    }
    choseSort(num, 10);
    printf("排序后的序列如下:\n");
    for (int i = 0; i < 10; i++) {
        printf("%2d ", num[i]);
    }
    return 0;
 }

img


#include <stdio.h>
#define N 10
int main()
{
    int Input[N] = {0};
    int i, j, k;
    printf("Input %d Number\n", (int)N);
    for (i = 0; i < N; i++)
    {
        printf("Input No.%d:", i + 1);
        scanf("%d", &Input[i]);
    }
    for (i = 0; i < N - 1; i++)
    {
        for (j = i + 1; j < N; j++)
        {
            if(Input[i] > Input[i + 1])
            {
                k = Input[i + 1];
                Input[i + 1] = Input[i];
                Input[i] = k;
            }
        }
    }
    printf("Resault  .oO:");
    for (i = 0; i < N; i++)
    {
        printf("%d ", Input[i]);
    }
    printf("\n");
    printf("Resault  Oo.:");
    for (i = 0; i < N; i++)
    {
        printf("%d ", Input[N - i - 1]);
    }
    printf("\n");
    return 0;
}

Sort函数排序