15036188778

您所在位置: 首页> IT培训> IT培训班 | 一个程序调用三种排序方法

IT培训班 | 一个程序调用三种排序方法

发布百知教育 来源:IT培训 2019-09-09

本程序创建了三个排序函数,可以任意通过调用冒泡排序算法,插入排序算法以及归并排序算法进行排序。本程序一共有6个文件,分别是头文件,sort_file.hpp,以及5个.cpp文件,头文件中定义了一个类,方便程序添加新的功能。

下面是头文件:

//

//  sort_file.hpp

//  sortfile

//

//  Created by lq on 2019/8/29.

//  Copyright © 2019 Mr.liang. All rights reserved.

//


#ifndef sort_file_hpp

#define sort_file_hpp


class sortnumber

{

public:

    void output(int array[],int n);

    void input(int array[],int n);

    void _insertsort(int array[],int n);

    void _bubblesort(int array[],int n);

    void _mergesort(int *a,int start,int end);

};


#endif /* sort_file_hpp */

下面是数组的输入输出文件:

//

//  in_output.cpp

//  sortfile

//

//  Created by lq on 2019/8/29.

//  Copyright © 2019 Mr.liang. All rights reserved.

//


#include "sort_file.hpp"

#include <iostream>

using namespace std;

void sortnumber::output(int *array, int n)

{

    for(int i = 0;i<n;i++)

    {

        cout<<array[i];

    }

}


void sortnumber::input(int *array, int n)

{

    for(int i = 0;i<n;i++)

    {

        cout<<"please input several numbers ["<<i+1<<"]......"<<endl;

        cin>>array[i];

    }

}


下面是插入排序函数:

//

//  insertsort.cpp

//  sortfile

//

//  Created by lq on 2019/8/29.

//  Copyright © 2019 Mr.liang. All rights reserved.

//


#include <iostream>

#include "sort_file.hpp"

using namespace std;

void sortnumber::_insertsort(int *array

                       , int n)

{

    cout<<endl<<"插入排序结果:"<<endl;

    int temp = 0;

    int i = 1,j=0;

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

    {

        temp = array[i];

        for(j=i-1;j>=0;j--)

        {

            if(temp>array[j])

            {

                break;

            }

            else

            {

                array[j+1] = array[j];

                array[j] = temp;

            }

        }

    }

}

下面是冒泡排序函数:

//

//  bubblesort.cpp

//  sortfile

//

//  Created by lq on 2019/8/29.

//  Copyright © 2019 Mr.liang. All rights reserved.

//


#include <iostream>

#include "sort_file.hpp"

using namespace std;


void sortnumber::_bubblesort(int *array,int number)

{

    cout<<endl<<"冒泡排序结果:"<<endl;

    int temp = 0;

    for(int i = 0;i<number;i++)

    {

        for(int j=0;j<number-1-i;j++)

        {

            if(array[j]>array[j+1])

            {

                temp = array[j];

                array[j] = array[j+1];

                array[j+1]=temp;

            }

        }

    }

}


下面是归并排序算法:

//

//  mergesort.cpp

//  sortfile

//

//  Created by lq on 2019/8/29.

//  Copyright © 2019 Mr.liang. All rights reserved.

//


#include "sort_file.hpp"

#include <iostream>

#define infinite 65535

using namespace std;


void merge(int array[],int start,int mid,int end)

{

    int i,j,k;

    int *array1 = new int [mid - start + 2];

    int *array2 = new int [end - mid + 1];

    for(i=0;i<mid-start+1;i++)

    {

        array1[i] = array[start+i];

    }

    *(array1+i) = infinite;

    for(i=0;i<end-mid;i++)

    {

        array2[i] = array[mid+i+1];

    }

    *(array2+i) = infinite;

    i = j = 0;

    for(k=start;k<end;k++)

    {

        if(array1[i]>array2[j])

        {

            array[k] = *(array2+j);

            j++;

        }

        else

        {

            array[k] = *(array1+i);

            i++;

        }

    }

    cout<<"sorting......"<<endl;

    for(int i = 0;i<=end;i++)

    {

        cout<<array[i]<<endl;

    }

    

    delete [] array1;

    delete [] array2;

}


void sortnumber::_mergesort(int *a, int start, int end)

{

    int mid = (start+end)/2;

    if (start<end)

    {

        _mergesort(a, start, mid);

        _mergesort(a, start, mid);

        merge(a,start,mid,end);

    }

}


下面是main()函数:

//

//  main.cpp

//  sortfile

//

//  Created by lq on 2019/8/29.

//  Copyright © 2019 Mr.liang. All rights reserved.

//


#include <iostream>

#include "sort_file.hpp"

using namespace std;

#define number 7

int main()

{

    sortnumber real;

    int a[number],mirror[number];

    real.input(a,number);

    cout<<"待排序数组为:"<<endl;

    for(int i=0;i<number;i++)

    {

        *(mirror+i)=a[i];

        cout<<mirror[i]<<" ";

    }

    real._insertsort(mirror, number);

    real.output(mirror,number);

    cout<<endl;

    

    cout<<"待排序数组为:"<<endl;

    for(int i=0;i<number;i++)

    {

        *(mirror+i)=a[i];

        cout<<mirror[i]<<" ";

    }

    real._bubblesort(mirror, number);

    real.output(mirror,number);

    cout<<endl;

    

    cout<<"待排序数组为:"<<endl;

    for(int i=0;i<number;i++)

    {

        *(mirror+i)=a[i];

        cout<<mirror[i]<<" ";

    }

    cout<<endl<<"归并排序结果......";

    real._bubblesort(mirror, number);

    real.output(mirror,number);

    cout<<endl;

}


运行结果如下:

please input several numbers [1]......

5

please input several numbers [2]......

6

please input several numbers [3]......

3

please input several numbers [4]......

1

please input several numbers [5]......

4

please input several numbers [6]......

2

please input several numbers [7]......

7

待排序数组为:

5 6 3 1 4 2 7 

插入排序结果:

1234567

待排序数组为:

5 6 3 1 4 2 7 

冒泡排序结果:

1234567

待排序数组为:

5 6 3 1 4 2 7 

归并排序结果......

冒泡排序结果

1234567

Program ended with exit code: 0



注释:本文来自 公众号 梁公子的备忘录

上一篇:java培训 | 你知道JDK1.7和1.8的区别吗?

下一篇:应届生去公司找个Java程序员的职位需要什么技能?

相关推荐

www.baizhiedu.com

有位老师想和您聊一聊

关闭

立即申请