📄 sort_pointer.cpp
字号:
/************************************************
* 动态数组排序演示程序
* 达内,陈宗权,2006/8
************************************************/
#include <iostream>
using namespace std;
int getNumber();//取得数据个数
void input( int*, int );//输入
void output( int*, int );//输出
bool getChioice();//选择升降序
void sort( int*, int, int(*)(int*, int*) );
int compA( int*, int* );//升序比较
int compD( int*, int* );//降序比较
void swap( int*, int* );//交换
int main()
{
int n = getNumber();
int *p = new int[n];//申请空间
if( p==NULL ){//失败处理
cout << "no enough memory" << endl;
return 0;
}
input( p, n );//输入n个数
output( p, n );//输出这n个数
if( getChioice() )
sort( p, n, compA );//升序排序
else
sort( p, n, compD );//降序排序
output( p, n );//输出排序结果
delete[] p;//释放内存空间
return 0;
}
int getNumber()
{
int n;
cout << "input the number of integers:";
cin >> n;//输入数据个数
return n;
}
void input( int* ap, int num )
{
cout << "input " << num << " integers:" << endl;
for( int i=0; i<num; i++ )
cin >> *ap++;
}
void output( int* ap, int num )
{
cout << num << " data: ";
for( int i=0; i<num; i++ )
cout << *ap++ << ' ';
cout << endl;
}
bool getChioice()
{
cout << "a-Ascend, other-Descend\n";
cout << "please choose:";
char ch;
cin >> ch;
return ch=='a'||ch=='A';
}
void sort( int* ap, int num, int(*fp)(int*,int*) )
{//排序调用指定比较函数来比较两个数据
for( int i=0; i<num; i++ )
for( int j=0; j<i; j++ )
if( fp( ap+j, ap+i ) > 0 )
swap( ap+j, ap+i );
}
int compA( int *p1, int* p2 )
{
return *p1-*p2;
}
int compD( int*p1, int*p2 )
{
return *p2-*p1;
}
void swap( int *p1, int *p2 )
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -