C语言排序实验代码

C语言排序实验代码
C语言排序实验代码

1.核心数据结构:

自定义数据类型:数组

如何定义:int a[ ]

结构示意图:

2.程序框架结构与流程图:

程序框架结构:

流程图:

3.细节设计

(1)直接插入排序:

实现的功能:利用直接插入排序的算法将数组有序化。

(2)冒泡排序:

实现的功能:最多N趟排序后,将数组有序化。

(3)简单选择排序:

实现的功能:利用选取剩余数中最大或最小的元素,最多经历n趟后,将数组有序化。(4)快速排序:

实现的功能:利用两个下标i,j将每个元素放在正确的位置,实现数组的有序化。

(5)大根堆的调整算法:

实现的功能:将一个堆调整为大根堆。

(6)堆排序:

实现的功能:在大根堆调整排序算法的基础上,经历掐尖和重新建立大根堆后,使数组有序化。

四、程序源代码

#include

int readdata(int a[]){

FILE *fp;

int n,i;

fp = fopen("data.txt","r");

fscanf(fp,"%d",&n);

for(i = 1;i <= n; i++){

fscanf(fp,"%d",a+i);

}

return n;

}

void Insert_Sort(int a[], int count){//直接插入排序

{ int i, j ;

for (i=2; i<=L->length; i++)

{ L->R[0]=L->R[i]; j=i-1;

while( LT(L->R[0].key, L->R[j].key) )

{ L->R[j+1]=L->R[j];

j--;

} L->R[j+1]=L->R[0];

}

}

}

void Bubble_Sort(int a[], int count){//冒泡排序

{ int j ,k , flag ;

for (j=0; jlength; j++)

{ flag=TRUE ;

for (k=1; k<=L->length-j; k++)

if (LT(L->R[k+1].key, L->R[k].key ) )

{ flag=FALSE ; L->R[0]=L->R[k] ;

L->R[k]=L->R[k+1] ;

L->R[k+1]=L->R[0] ;

}

if (flag==TRUE) break ;

}

}

}

void Select_Sort(int a[], int count){//简单选择排序

{ int m, n , k;

for (m=1; mlength; m++)

{ k=m ;

for (n=m+1; n<=L->length; n++)

if ( LT(L->R[n].key, L->R[k].key) ) k=n ;

if (k!=m) /* 记录交换*/

{ L->R[0]=L->R[m]; L->R[m]=L->R[k];

L->R[k]=L->R[0];

}

}

}

}

int Quick_Sort_OnePass(int a[], int start, int end){

}

void Quick_Sort(int a[], int start, int end){//快速排序

{ int k ;

if (low

{ k=quick_one_pass(L, low, high);

quick_Sort(L, low, k-1);

quick_Sort(L, k+1, high);

} /* 序列分为两部分后分别对每个子序列排序*/ }

}

void Heap_Modify_Max(int a[], int root, int n){//大根堆调整算法{ int j=s, k=2*j ;

H->R[0]=H->R[j] ;

for (k=2*j; k<=m; k=2*k)

{ if ((kR[k+1].key, H->R[k].key)) k++ ;

if ( LT(H->R[k].key, H->R[0].key) )

{ H->R[j]=H->R[k] ; j=k ; k=2*j }

else break ;

}

}

void Heap_Sort(int a[], int n){//堆排序

{ int j ;

for (j=H->length/2; j>0; j--)

Heap_adjust(H, j , H->length) ;

}

for (j=H->length/2; j>=1; j--)

{ H->R[0]=H->R[1] ; H->R[1]=H->R[j] ;

H->R[j]=H->R[0] ;

Heap_adjust(H, 1, j-1) ;

}

}

int main(){

int a[10],i, count;

count = readdata(a);

printf("原始数据:");

for(i = 1;i <= count; i++){

printf("%5d",a[i]);

}

Bubble_Sort(a, count);

printf("\n冒泡排序结果:");

for(i = 1;i <= count; i++){

printf("%5d",a[i]);

}

count = readdata(a);

Insert_Sort(a, count);

printf("\n插入排序结果:");

for(i = 1;i <= count; i++){

printf("%5d",a[i]);

}

count = readdata(a);

Select_Sort(a, count);

printf("\n简单选择排序:");

for(i = 1;i <= count; i++){

printf("%5d",a[i]);

}

count = readdata(a);

Quick_Sort(a, 1, count);

printf("\n快速排序结果:");

for(i = 1;i <= count; i++){

printf("%5d",a[i]);

}

count = readdata(a);

Heap_Sort(a, count);

printf("\n堆排序结果:");

for(i = 1;i <= count; i++){

printf("%5d",a[i]);

}

printf("\n");

return 0;

}

相关主题
相关文档
最新文档