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

 时间:2026-02-13 01:58:47

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

  • 如何求y=cos3x与y=cos6x围成的面积
  • 如何掌握那些精辟的人生哲理?
  • 王者荣耀赛季s24赛季什么时候结束
  • qq飞车手游怎样获得逐星者-恋语
  • 考研要不要报辅导班
  • 热门搜索
    堵车怎么发朋友圈搞笑 长沙理工大学城南学院怎么样 退休工资如何计算 旅游鞋女 启辰r50怎么样 乌海旅游景点大全 合肥旅游团 怎样安装路由器 psp金手指怎么用 泰山在哪里