zoukankan      html  css  js  c++  java
  • 第十六周项目1-数组的排序指针版

    按给定部分程序的要求,用指向数组的指针变量作为形式参数编写函数,完成排序。
    (1)排序算法,可以是冒泡,也可以是选择
    (2)用指向数组的指针变量作为形式参数,用数组名(即数组的地址)作为实际参数,函数中对于形参的改变实质上也就是对实参对应内存单元的改变;

    (3)形式参数中不指定数组大小,实际数组的大小也一并作为参数传递。

    (4)使用降序的规则排列数组。

    冒泡排序版:

    /*
    * Copyright (c) 2014,烟台大学计算机学院
    * All right reserved.
    * 作者:邵帅
    * 文件:temp.cpp
    * 完成时间:2014年12月7日
    * 版本号:v1.0
    */
    #include <iostream>
    using namespace std;
    void sort(int *p, int num);
    void output(int*, int);   
    int main( )
    {	int a[20]={86,46,22,18,77,45,32,80,26,88,57,67,20,18,28,17,54,49,11,16};
    	int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};
    	sort(a,20);
    	output(a,20);
    	sort(b,15);
    	output(b,15);
    	return 0;
    }
    void sort(int *p, int num)
    {
        int i,j,t;
        for (j=0;j<num-2;j++) //进行num-1次循环
            for (i=0;i<num-j-1;i++) //进行num-j次比较
                if (*(p+i+1)>*(p+i))
                {
                  t=*(p+i);*(p+i)=*(p+i+1);*(p+i+1)=t;
                }
    }
    void output(int*p, int num)
    {
        int i;
        for (i=0;i<num;i++)
            cout<<*(p+i)<<" ";
        cout<<endl;
    }

    选择排序版:

    /*
    * Copyright (c) 2014,烟台大学计算机学院
    * All right reserved.
    * 作者:邵帅
    * 文件:temp.cpp
    * 完成时间:2014年12月7日
    * 版本号:v1.0
    */
    #include <iostream>
    using namespace std;
    void sort(int *p, int num);
    void output(int*, int);
    int main( )
    {	int a[20]={86,46,22,18,77,45,32,80,26,88,57,67,20,18,28,17,54,49,11,16};
    	int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};
    	sort(a,20);
    	output(a,20);
    	sort(b,15);
    	output(b,15);
    	return 0;
    }
    void sort(int *p, int num)
    {
        int i,j,k,t;
        for(i=0; i<num-1; i++)
        {
            k=i;
            for(j=i+1; j<num; j++)
                if(*(p+j)>*(p+k))
                    k=j;
                {
                  t=*(p+k);*(p+k)=*(p+i);*(p+i)=t;
                }
        }
    }
    void output(int*p, int num)
    {
        int i;
        for (i=0;i<num;i++)
            cout<<*(p+i)<<" ";
        cout<<endl;
    }

    运行结果:



    @ Mayuko

  • 相关阅读:
    SQL Server 通用分页存储过程
    SQL 分页通用存储过程
    python 获取本机IP的三种方式
    Python代码打印出9*9 九九乘法表
    python进程.线程和协程的总结
    5.__魔法方法__开会喽
    css干货部分
    html干货部分
    pyinstaller 打包exe可执行文件
    3_3.黏包现象
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567597.html
Copyright © 2011-2022 走看看