在linux系统上的排序时间及CPI
对一一维数组input_array的数据进行排序
#include <stdio.h>
#include <time.h>
#include "input.h"
int input_array2[2000];
void exchangesort();
void quicksort(int low,int high,int input_array[]);
//exchangesort
void exchangesort()
{
int i,j,temp;
for(i=0;i<1999;i++)
{
for(j=i+1;j<2000;j++)
{
if(input_array[i]>input_array[j])
{
temp=input_array[j];
input_array[j]=input_array[i];
input_array[i]=temp;
}
}
}
}
//quicksort
int partition(int low,int high,int input_array[])
{
int temp=input_array[low];
int pivotitem=input_array[low];
while (low<high)
{
while (low<high && input_array[high]>=pivotitem)
--high;
input_array[low]=input_array[high];
while (low<high && input_array[low]<=pivotitem)
++low;
input_array[high]=input_array[low];
}
input_array[low]=temp;
return low;
}
void quicksort(int low,int high,int input_array[])
{
if (low<high)
{
int part=partition(low,high,input_array);
quicksort(low,part-1,input_array);
quicksort(part+1,high,input_array);
}
}
int main()
{
int time1,time2,start;
int i;
for (i=0; i<2000; i++)
input_array2[i] = input_array[i];
start=clock();
exchangesort();
time1=clock()-start;
start=clock();
quicksort(0,2000,input_array2);
time2=clock()-start;
printf("Test end.\n Exchangesort time:%4d msc\n Quicksort time:%4d msc\n",time1,time2);
return 0;
}