本程序创建了三个排序函数,可以任意通过调用冒泡排序算法,插入排序算法以及归并排序算法进行排序。本程序一共有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
注释:本文来自 公众号 梁公子的备忘录