数据结构实验二排序算法代码实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

#define MAXK 10

using namespace std;

int get_int(void);

int countSort (int*array,int n,int d);

int get_value(int a,int d);

void radixSort(int* a,int n,int d);

void quickSort(int a[],int,int);

//选择排序

void selectionSort(int a[],int n)

{

bool sorted = false;

for(int size = n;!sorted && (size>1); size--) {

int indexOfMax = 0;

sorted = true;

for(int i = 1;i

if (a[indexOfMax]<= a[i])

indexOfMax = i;

else

sorted = false;

swap(a[indexOfMax],a[size-1]);

for(int i=0;i

cout<

cout<<"\n";

}

}

//冒泡排序

bool bubble(int a[],int n)

{

bool swapped = false;

for(int i =0;i

{

if(a[i]>a[i+1])

{

swap(a[i],a[i+1]);

swapped = true;

}

for(int x=0;x<6;x++)

cout<

cout<<"\n";

}

return swapped;

}

void bubbleSort(int a[],int n)

{

for (int i =n; i>1 && bubble(a,i);i--);

}

//插入排序

void insertionSort(int a[],int n)

{

for(int i=1;i

{

int t=a[i];

int j;

for(j=i-1;j>=0 && t

a[j+1]=a[j];

a[j+1]=t;

for(int i=0;i

cout<

cout<<"\n";

}

}

//基数排序

void radixSort(int* a,int n,int d)

{

for (int i=0;i<=d;i++)

countSort(a,n,i);

}

int countSort (int *array, int n,int d) {

int k[MAXK] = {0};

int * temp,*b;

int i;

temp = (int *) malloc (sizeof (int)*n);

b = (int *) mallo

c (sizeof (int)*n); if (NULL == temp)

return 0 ;

for (i=0;i

b[i] = get_value(array[i],d);

for (i = 0; i < n; i++)

k[b[i]]++;//记录与数组下标相等的数值的个数

for (i=1;i<10;i++)

k[i]+=k[i-1];//储存自己数组下标数值在目标数组对应的位置

for (i=n-1;i>=0;i--)

temp[--k[b[i]]]=array[i]; //将原数组按大小顺序储存到另一个数组

//显示temp数组

for (i=0;i

printf("%d ",temp[i]);

printf("\n");

for (i = 0; i < n; i++)

array[i] = temp[i];

free (temp);

free (b);

return 1 ;

}

int get_value(int a,int d)

{

int b=a;

for (;d>0&&a>0;d--)

b/=MAXK;

return b%MAXK;

}

int get_int(void)

{

int input;

char ch;

while (scanf("%d",&input)!=1)

{

while((ch=getchar())!='\n')

putchar(input);

printf(" is not an integer.\nPlease enter an integer value,such as 25,-178,or 3;\n");

}

return input;

}

//快速排序

void quickSort(int s[], int l, int r)

{

if (l< r)

相关文档
最新文档