`
zy3381
  • 浏览: 157538 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

指向指针的方法对n个整数排序

 
阅读更多
#include"stdio.h"
/*
    通过指向指针的指针来排序
    即根据指针所指的元素的大小来将指针地址排序
    而后依次输出指针地址的时候得到的就是有序的数组
    比如3,1的指针地址分别为a和b,即a->3,b->1
    交换指针位置后a->1,b->3
    对本程序中的ptr指针数组进行了排序
*/
void sort(int **p, int n)
{
    int i,j;
    int *t;
    for(i=0; i<n; i++)
    {
        for(j=i+1; j<n; j++)
        {
            if(*p[i] > *p[j])
            {
                t = p[i];
                p[i] = p[j];
                p[j] = t;
            }
        }
    }
}

/*
    将中间冒泡出来的值取出来通过指针进行替换
    这种方式直接通过指针修改到了原来的数组
    对本程序中的a数组进行了排序
*/
void sort1(int **p, int n)
{
    int i,j;
    int temp1;
    for(i=0; i<n; i++)
    {
        for(j=i+1; j<n; j++)
        {
            if(*p[i] > *p[j])
            {
                temp1 = *p[i];
                *p[i] = *p[j];
                *p[j] = temp1;
            }
        }
    }
}

void main()
{
    int i;
    int n=5;
    int *ptr[5];
    int a[5] = {0};
    printf("input %d numbers:\n", n);
    for(i=0; i<n; i++)
    {
        ptr[i] = &a[i];
        scanf("%d", ptr[i]);
    }
    printf("before sort:\n");
    for(i=0; i<n; i++)
    {
        printf("%d\n", a[i]);
    }

    //对ptr数组修改的指向指针的排序
    sort(ptr, n);
    printf("after sort(*ptr[]):\n");
    for(i=0; i<n; i++)
    {
        printf("%d\n", *ptr[i]);
    }
    printf("after sort(a[]):\n");
    for(i=0; i<n; i++)
    {
        printf("%d\n", a[i]);
    }
  /*
    //对a数组修改的指向指针的排序
    sort1(ptr, n);
    printf("after sort(*ptr[]):\n");
    for(i=0; i<n; i++)
    {
        printf("%d\n", *ptr[i]);
    }
    printf("after sort1(a[]):\n");
    for(i=0; i<n; i++)
    {
        printf("%d\n", a[i]);
    }
  */
}
分享到:
评论

相关推荐

    用指向指针的方法对n个整数排序并输出。

    不仅用指向指针的方法对n个整数排序并输出,而且将排序单独写成一个函数,N个整数在主函数中的输入,最后在主函数中的输出。

    指向函数的指针与排序

    在改进后的`bubble_sort`函数中,我们添加了一个参数`int (*comp)(int a, int b)`,它是一个函数指针,接受两个整数并返回一个布尔值。这样,我们可以通过传入不同的比较函数来控制排序的方向。例如,我们定义了一个...

    c++习题-超长数列中n个整数排列

    题目“C++习题-超长数列中n个整数排列”旨在通过一个具体的类实现,来探讨如何有效地对数列中的元素进行排序和管理。本解析将深入分析代码示例,提炼关键知识点,并扩展其背后的原理。 #### 关键知识点: 1. **...

    利用指针数组冒泡法排序

    接着,我们将使用这个指针数组来存储需要排序的整数。由于数组元素是动态分配的,我们需要使用`new`运算符为每个元素分配内存: ```cpp intPtrArray[0] = new int; *intPtrArray[0] = 5; // 给第一个元素赋值 // .....

    c++中指向函数的指针

    例如,如果有一个接受整数参数并返回整数的函数,我们可以这样定义一个指针: ```cpp int (*FunctionPointer)(int); ``` 这里的`FunctionPointer`是一个指针,它指向一个接收`int`类型参数并返回`int`类型的函数。...

    .编写一个函数,将数组中n个数按反序存放。 实验步骤与要求: 在主函数中输入10个数,并输出排好序的数。 编写函数invert()将10个数按反序存放。

    其核心思想是通过两个指针`n`和`m`分别指向数组的中间位置和最后一个元素的位置,然后依次交换两个指针所指向的元素值,直到所有元素都被正确地反转。 #### 函数参数解释 - `int *p`: 指向数组的第一个元素的指针。...

    C 语言函数指针小结

    例如,`int (*p)[n]` 表示 `p` 是一个指向包含 `n` 个整数的数组的指针,而 `int (*p)()` 表示 `p` 是一个函数指针,该函数返回整型值。解析这种复杂的声明,可以遵循所谓的"右左法则",即从右向左阅读,遇到括号时...

    第9章 指针和数组-4指针数组及其应用 - 用指针数组表示多个字符串1

    同时,指针数组还可以方便地进行字符串的排序、查找等操作,例如`SortString`函数就是一个例子,它接受一个字符串指针数组和数量,通过比较字符串并交换指针来对字符串进行排序。 总的来说,理解和熟练运用指针数组...

    c语言面试题之双指针按奇偶排序数组.zip

    针对"双指针按奇偶排序数组"的问题,我们需要一个包含整数的数组,并按照以下规则重新排列:所有偶数应该排在前面,所有奇数应该排在后面,但保持原有顺序不变(即相对位置)。例如,如果原数组为[1, 2, 3, 4, 5],...

    简单的排序算法

    `lParam1`和`lParam2`分别代表正在比较的两个列表项的索引,而`lParamSort`通常是一个指向`CListCtrl`实例的指针,这样函数内部可以访问到列表控件的属性和方法。 在函数体中,首先通过`CListCtrl *pList = ...

    C语言指针经典题目

    - **交换函数**:`void jiaohuan(int *a, int *b)` 这个函数接受两个指向整数的指针作为参数,用于交换它们所指向的整数值。 #### 知识点总结 - **指针传递**:通过传递变量的地址而非值,可以在被调用函数中直接...

    指针与数组区别,实验与指导-数组指针字符串

    1. 请根据上题编写对输入的 a、b、c 三个整数,按大小顺序输出。 2. 如果输入 a、b、c、d 四个整数,按由大到期小的顺序输出,能否编写程序。 答案 1. 使用指针数组来实现三整数的排序。 ```c void swap(int *pt1,...

    程序设计-选择排序的指针实现.pptx

    数组名作为函数参数实例8.5,用选择法对数组中10个整数按从小到大排序。 在sort函数中,形参为指针变量,该变量接收实参数组的首地址,此时形参指针变量a与实参数组a,指向同一片存储空间。用指针引用数组中的元素...

    整数奇偶排序(信息学奥赛一本通-T1181).rar

    整数奇偶排序,顾名思义,是一种对整数序列进行特定规则的排序方法,主要出现在信息学竞赛中,例如“信息学奥赛一本通-T1181”这个题目。这种排序要求将给定的整数序列按照奇数和偶数的顺序排列,即先排列所有奇数,...

    C语言指针数组函数笔记

    },则可以通过指针变量x和y交换两个整数的值。 六、实例程序 例如,使用指针变量求解两个整数的升序输出: main() { int num1, num2; int *num1_p = &num1, *num2_p = &num2, *pointer; printf("Input the ...

    20151910042-刘鹏-09-指针程序设计(三)1

    在示例程序中,`sort` 函数接受一个字符指针数组和一个整数作为参数,用于对字符串进行排序。在`main`函数中,`sort`函数被调用,并通过函数指针`void (*sort)(char *a[], int n)`传递。 3. `strcmp`函数:在排序...

    有关C/C++的函数指针概念课件仅供学习使用

    qsort函数接受四个参数,其中base指向数组的起始地址,nelem表示数组中元素的数量,width表示数组中每个元素的字节数,pfCompare是一个函数指针,指向用于比较两个元素的函数。这个比较函数必须符合特定的签名,并...

    常见数组面试题

    两个指针分别指向两个数组的起始位置,比较当前指针所指元素大小,如果相等,则输出并移动两个指针;如果不相等,则移动较小元素所在数组的指针。这种方法时间复杂度为O(n),空间复杂度为O(1)。 #### 七、求3个数组...

    C语言函数指针与指针函数训练.zip

    例如,如果你有一个接受两个整数并返回整数的函数,你可以这样定义一个函数指针: ```c int add(int a, int b); typedef int (*AddFunc)(int, int); // 定义一个函数指针类型 AddFunc addPtr = add; // 将add函数的...

    C++指针运指针与函数、数组

    - **指针加减整数**:指针加上或减去一个整数的结果是新的地址值,即当前指针所指向位置之后或之前相应数量的数据的地址。 ```cpp int a[4] = {1, 2, 3, 4}; int *p = a, *p1 = p + 3; // p+0、p+1、p+2、p+3...

Global site tag (gtag.js) - Google Analytics