`
zy3381
  • 浏览: 155510 次
  • 性别: 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个整数在主函数中的输入,最后在主函数中的输出。

    C++课程实验报告一.docx

    3、根据下面的要求一步步写...9、(1)编一程序,用同一个函数名对n个数据进行从小到大排序,数据类型可以是整型、单精度型、双精度型、字符串型。要求用重载函数实现 (2)对(1)改用函数模板实现,并进行对比分析。

    c程序设计习题参考(谭浩强三版)习题参考解答

    10.17用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和正整数在主函数中输入。最后在主函数中输出。 90 第11章 结构体与共用体 91 11.1定义一个结构体变量(包括年,月,日)。计算该日...

    指针实验实验报告.doc

    C语言程序设计实验报告 专业:计算机科学与技术 班级:计算机科学与技术创新实验班 日期:2011-12-29 成绩: 实验组别: 第 次实验: 指导教师... 编写一个程序,输入n个整数,排序后输出。排序的原则由命令行可选参数

    《数据结构》实验

    内容:1、已知带头结点的动态单链表L中的结点是按整数值递增排序的,试写一算法将值为x的结点插入到表L中,使L仍然有序。 2、设计一算法,逆置带头结点的动态链表L。要求利用原表的结点空间,并要求用尽可能少的时间...

    c/c++ 学习总结 初学者必备

    c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) d) 一个有10个整型数的数组(An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的...

    你必须知道的495个C语言问题

    例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 1.22 如何声明返回指向同类型函数的指针的函数?我在设计一个状态机,用函数表示每种状态,每个函数都会返回一个指向下一个状态的函数的指针。可我...

    算法分析与设计习题集答案

    17、 已知序列{503,87,512,61,908,170,897,275,652,462},写一个自底向上的归并分类算法对该序列作升序排序,写出算法中每一次归并执行的结果。 贪心法 18、 设有n个文件f1,f2,…,fn要求存放在一个磁盘...

    220个经典C语言源码

    023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的...

    200个经典C程序源码小游戏

    023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的...

    C语言学习实例220例

    023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的输入输出 ...

    《你必须知道的495个C语言问题》

    例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组? 11  1.22 如何声明返回指向同类型函数的指针的函数?我在设计一个状态机,用函数表示每种状态,每个函数都会返回一个指向下一个状态的函数的指针...

    220个C语言经典代码

    023 指向数组的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字转换为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的...

    《数据结构 1800题》

    其中 n为正整数,则最后一行的语句频度在最坏情况下是(D ) 郴州都市网 www.0735.cc郴州人才网 www.CZHR.com www.989.org 《数据结构 1800题》 A. O(n) B. O(nlogn) C. O(n3) D. O(n2) 【南京理工大学 ...

    c语言数据结构实验:掌握线性表的链式存储结构 熟练掌握循环链表的存储特征和建立方法,掌握线性表的链式存储结构 下面是源码的txt

    已知带头结点的动态单链表L中的结点是按整数值递增排序的,试写一算法将值为的结点插入到表L中,使L仍然有序。要求算法的时间复杂度为 O(),空间复杂度为 O(1)。2、设计一算法,逆置带头结点的动态链表L。要求利用原...

Global site tag (gtag.js) - Google Analytics