第十六周 【项目1 - 验证算法】

来源:互联网 发布:12306泄露数据库 网盘 编辑:程序博客网 时间:2024/06/06 07:28
/*       Copyright (c)2016,烟台大学计算机与控制工程学院       All rights reserved.       文件名称:项目一之各种排序.cpp       作    者:李潇       完成日期:2016年12月18日       版 本 号:v1.0              问题描述:请用各种排序算法完成序列{57,40,38,11,13,34,48,75,6,19,9,7}的排序。  输入描述:无     程序输出: 几种排序前、排序后的数组。  */     

代码:

#include <stdio.h> #define maxsize 12typedef int KeyType;typedef int InfoType;typedef struct{KeyType key;InfoType data;}RecType;void  Bubblesort(RecType R[],int n)//冒泡排序 {int i,j;bool exchange;RecType tmp;for(i=0;i<n-1;i++){exchange=false;for(j=n-1;j>i;j--)if(R[j].key<R[j-1].key){tmp=R[j];R[j]=R[j-1];R[j-1]=tmp;exchange=true;}if(!exchange){printf("冒泡排序后的数组:\n");        for(i=0;i<n;i++)             printf("%d ",R[i].key);        printf("\n");  return;}}}void QuickSort(RecType R[],int s,int t) //快速排序 {int i=s,j=t;RecType tmp;if(s<t){tmp=R[s];while(i!=j){while(j>i && R[j].key>=tmp.key)  j--;R[i]=R[j];while(i<j && R[i].key<=tmp.key)   i++;R[j]=R[i];}R[i]=tmp;    QuickSort(R,s,i-1);    QuickSort(R,i+1,t);}}void SelectSort(RecType R[],int n)//直接选择排序 {int i,j,k;RecType tmp;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)   if(R[j].key<R[k].key)        k=j;if(k!=i){tmp=R[i];R[i]=R[k];R[k]=tmp;}}printf("直接选择排序后的数组:\n");for(i=0;i<n;i++)   printf("%d ",R[i].key);printf("\n");}int main(){RecType r[maxsize];KeyType a[]={57,40,38,11,13,34,48,75,6,19,9,7};int i;for(i=0;i<maxsize;i++)  r[i].key=a[i];printf("输出排序前的数组:\n") ;for(i=0;i<maxsize;i++)   printf("%d ",r[i].key);printf("\n");QuickSort(r,0,maxsize-1);   printf("快速排序后的数组:\n");   for(i=0;i<maxsize;i++)      printf("%d ",r[i].key);   printf("\n");    Bubblesort(r,maxsize);   SelectSort(r,maxsize);return 0;} 


运行结果;


心得体会:

在这里需注意冒泡排序的地方,这里用的是改进版的冒泡排序,需要注意它的return;  这句话。

0 0