利用指针的动态分配内存空间的冒泡排序

2025-11-15 09:13:19

1、#include<iostream>

using namespace std;

void sort(char *name[], int n)

{

    char *tmp;

    int i, j;

    for (i = 0;i < n - 1;i++)

    {

        for (j = 1;j < n;j++)

        {

            if (strcmp(name[j-1],name[j]) > 0)

            {

                tmp = name[j];

                name[j] = name[j - 1];

                name[j - 1] = tmp;

            }

        }

    }

}

void print(char *name[], int n)

{

    int i = 0;

    char *p;

    p = name[0];

    while (i < n)

    {

        p = *(name + i++);

        cout << p << endl;

    }

}

int main()

{

    char *name[] = { "mingri", "soft", "C++", "mr" };

    int n = 4;

    print(name, n);

    sort(name, n);

    cout << "排序后:" << endl;

    print(name, n);

    return 0;

}

1、关键函数为sort,算法的原理如下: 

1. 比较相邻的元素:

strcmp(name[j-1],name[j]。

2.如果第一个比第二个大,就交换他们两个:

tmp = name[j];

name[j] = name[j - 1];

name[j - 1] = tmp;

3.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个:

嵌套for里的第一个for

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较:

嵌套for里的第二个for

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢