C++算法实现:先在一个数组中随机地产生1000个1~3000以内的互不相同的整数。然后使用冒泡排序和快速排序的方法分别对其排序。该怎么处理

C++算法实现:先在一个数组中随机地产生1000个1~3000以内的互不相同的整数。然后使用冒泡排序和快速排序的方法分别对其排序。
先在一个数组中随机地产生1000个1~3000以内的互不相同的整数。然后使用冒泡排序和快速排序的方法分别对其排序。
要求:
1)对每种排序方法分别记录其排序过程中元素的比较次数。
2)比较两种排序方法的优劣。

以上是朋友的数据结构编程题,让我用C++写出算法来,我这望着C++就头痛,都是牛人用的语言,我这菜鸟来的.看看哪位有类似的程序,发上来参考一下吧,谢谢!

------解决方案--------------------
#include <iostream>
#include <time.h>
using namespace std;

int data[1000];
void bubble();
void quickSort(int,int);
void main()
{
int rem;
int num;
bool Flag=true;
srand((unsigned)time(NULL));
for(int i=0;i <=999;)//产生data[i]
{
Flag=true;
num=rand()%3000+1;
rem=i;
for(int j=0;j <=rem-1;j++)
if(num==data[j])
{
Flag=false;
break;
}
if(Flag)
{
data[i]=num;
i++;
}
}


cout < < "Before sort: " < <endl;
for(int j=0;j <=999;j++)
cout < <data[j] < < " ";
cout < <endl;

bubble();
//quickSort(0,999);

cout < < "After sort: " < <endl;
for(j=0;j <=999;j++)
cout < <data[j] < < " ";
}


void bubble()
{
int temp;
for(int j=0;j <=999;j++)
for(int i=0;i <=998-j;i++)
if(data[i]> data[i+1])
{
temp=data[i];
data[i]=data[i+1];
data[i+1]=temp;
}
}


int partition(int low,int high)
{
int current=data[low];
while(low <high)
{
while((low <high)&&data[high]> =current)
--high;
data[low]=data[high];

while((low <high)&&data[low] <=current)
++low;
data[high]=data[low];
}
data[low]=current;
return low;
}

void quickSort(int low,int high)
{
int axic;
if(low <high)
{
axic=partition(low,high);
quickSort(low,axic-1);
quickSort(axic+1,high);
}
}

------解决方案--------------------
#include "stdafx.h "
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 3000
#define NUM 1000

int * RandInt(int rang, int want) //rang 范围为1-rang,want为要的数目
{
int *result = new int[want];
int *r = new int[rang];
int i, k;

for (i = 0; i < rang; i++)
{
r[i] = i+1;
}

srand((unsigned(time(NULL))));

for (k = rang-1; k > 0; k--)
{
i = rand()%k;
int temp = r[k];
r[k] = r[i];
r[i] = temp;
}

for (k = 0; k < want; k++)
{
result[k] = r[rang-k-1];
}
delete []r;
return result;
}

int BubbleSort(int a[], int n) //冒泡法
{
int numCompare = 0;
for (int i = 0; i < n; i++)
{
bool exchange = false;
for (int j = n-1; j > i; j--)
{
numCompare++;
if (a[j] < a[j-1])
{
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
exchange = true;
}
}

if (!exchange)
return numCompare;
}
return numCompare;

}

int Partion(int a[],int i, int j, int & numCompare) //找中间值
{
int temp = a[i];
while (i < j)
{
while (i < j && a[j] > = temp)