用c++编写Sort函数程序

主函数中有一个数组a[10]={10,4,7,98,-456,0,-56,78,23,-567}, 试编写函数Sort(int *p, int n),实现把数组a的所有元素从小到大排列。主函数中需要输出排列前和排列后的所有数组元素,元素之间用空格隔开。

img

如下:

#include <iostream>
using namespace std;
void Sort(int* p,int n)
{
    int i,j,t;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(p[j]>p[j+1])
            {
                t = p[j];
                p[j] = p[j+1];
                p[j+1] = t;
            }
        }
    }
}

int main()
{
    int a[10]={10,4,7,98,-456,0,-56,78,23,-567};
    int i;
    cout <<"排序前:"<<endl;
    for(i=0;i<10;i++)
    {
        if(i<9)
            cout <<a[i]<<" ";
        else
            cout <<a[i]<<endl;
    }
    Sort(a,10);
    cout <<"排序后:"<<endl;
    for(i=0;i<10;i++)
    {
        if(i<9)
            cout <<a[i]<<" ";
        else
            cout <<a[i]<<endl;
    }
    return 0;
}

img

#include <iostream>
using namespace std;
#include <stdio.h>
#define N 10
void p_sort(int* p, int n)
{
    int i, j, t;
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - i - 1; j++) {
            if (*(p + j) > *(p + j + 1))
            {
                t = *(p + j); *(p + j) = *(p + j + 1); *(p + j + 1) = t;
            }
        }
    }
}
void p_output(int* p, int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        printf("%d ", *(p + i));
    }
}
int main()
{
    int i, a[10]={10,4,7,98,-456,0,-56,78,23,-567};
     p_output(a, 10);
     cout<<endl;
    p_sort(a, 10);
    p_output(a, 10);
    return 0;
}
 

img


你题目的解答代码如下:

#include <iostream>
using namespace std;

void sort(int *p,int n)
{
    int i,j;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
            if(*(p+j) > *(p+j+1))
            {
                int t = *(p+j);
                *(p+j) = *(p+j+1);
                *(p+j+1) = t;
            }
}

int main()
{
    int a[10]={10,4,7,98,-456,0,-56,78,23,-567};
    sort(a,10);
    for(int i=0;i<10;i++)
        cout << a[i] << " ";
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

有两位的指针写的很nice