目录
第一关、实现直接插入排序
评测说明
本关的测试文件是 step1/Main.cpp ,测试过程如下:
- 平台编译 step1/Main.cpp ,然后链接相关程序库并生成 exe 可执行文件;
- 平台运行该 exe 可执行文件,并以标准输入方式提供测试输入;
- 平台获取该 exe 可执行文件的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
输入输出格式说明
输入格式: 首先输入一个正整数n
。 然后输入n
个整数。
输出格式: 输出对n
个整数从小到大排序的结果。
以下是平台对 step1/Main.cpp 的样例测试集:
样例输入: 5
45 78 2 34 90
样例输出: sort result:2 34 45 78 90
/*************************************************************
date: April 2009
copyright: Zhu En
DO NOT distribute this code without my permission.
**************************************************************/
//排序算法实现文件
#include<stdio.h>
#include<stdlib.h>
#include"directInsSort.h"
void DirecInsSort(int* a, int n)
// direct insert sorting
{
int i, k;
for (i=1; i<n; i++) {
// 请在此添加代码,补全函数DirecInsSort
/********** Begin *********/
int temp=a[i];
for(k=i-1;temp<=a[k]&&k>=0;k--)
{
a[k+1]=a[k];
}
a[k+1]=temp;
/********** End **********/
}
}
void SortPrint(int* a, int n)
{
int i;
printf("sort result:");
for (i=0; i<n; i++)
printf("%d ", a[i]);
//printf("\n");
}
第二关、实现快速排序
评测说明
本关的测试文件是 step2/Main.cpp ,测试过程如下:
- 平台编译 step2/Main.cpp ,然后链接相关程序库并生成 exe 可执行文件;
- 平台运行该 exe 可执行文件,并以标准输入方式提供测试输入;
- 平台获取该 exe 可执行文件的输出,然后将其与预期输出对比,如果一致则测试通过;否则测试失败。
输入输出格式说明
输入格式: 首先输入一个正整数n
。 然后输入n
个整数。
输出格式: 输出对 n 个整数从小到大排序的结果。
以下是平台对 step1/Main.cpp 的样例测试集:
样例输入: 5
45 78 2 34 90
样例输出: sort result:2 34 45 78 90
/*********************************************
date: April 2009
copyright: Zhu En
DO NOT distribute this code.
*********************************************/
//排序算法实现文件
//
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include"quickSort.h"
void QSort__(int* a, int low, int high)
//快速排序私有函数,供QuickSort()调用
//在a[low:high]中选择一个中心值,用该中心值将a[low:high]分割为两部分
//然后对两个部分递归地进行该操作。
{
int i, j;
if(low>=high) return;
Swap(a[low], a[rand()%(high-low+1)+low]); //select a pivot randomly
i=low; j=high;
int temp=a[i];
// 请在此添加代码,补全函数QSort__
/********** Begin *********/
while(i<j)
{
while(a[j]>temp&i<j)
{
j--;
}
while(a[i]<=temp&&i<j){
i++;
}
if(i<j){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[low]=a[i];
a[j]=temp;
QSort__(a,low,i-1);
QSort__(a,i+1,high);
/********** End **********/
}
void QuickSort(int* a, int n)
//快速排序主函数
{
srand((unsigned)time(0)); //for selecting the pivot randomly in QSort__().
QSort__(a, 0, n-1);
}
void SortPrint(int* a, int n)
{
int i;
printf("sort result:");
for(i=0;i<n;i++)
printf("% d",a[i]);
//printf("\n");
}