数据结构第三周选择排序与快速排序差别

来源:互联网 发布:linux ioctlsocket 编辑:程序博客网 时间:2024/05/19 22:25

1.       /*  

2.       烟台大学计算机学院  

3.         

4.       文件名称:lsy.cpp  

5.         

6.       作者:贾存钰 

7.         

8.       完成日期:2017年9月13日  

9.         

10.   问题描述:选择排序与快速排序差别 

11.     

12.    

13.     

14.   */   

15.     

16.   //选择排序:  

17.     

1.        #include <stdio.h>  

2.        #include <time.h>  

3.        #include <stdlib.h>  

4.        #define MAXNUM 100000  

5.        void selectsort(int a[], int n)  

6.        {  

7.                int i, j, k, tmp;  

8.                for(i = 0; i < n-1; i++)  

9.                {  

10.                     k = i;  

11.                     for(j = i+1; j < n; j++)  

12.                     {  

13.                             if(a[j] < a[k])  

14.                                     k = j;  

15.                     }  

16.                     if(k != j)  

17.                     {  

18.                             tmp = a[i];  

19.                             a[i] = a[k];  

20.                             a[k] = tmp;  

21.                     }  

22.             }  

23.     }  

24.       

25.     int main()  

26.     {  

27.         int x[MAXNUM];  

28.         int n = 0;  

29.         double t1,t2;  

30.         FILE *fp;  

31.         fp = fopen("numbers.txt""r");  

32.         if(fp==NULL)  

33.         {  

34.             printf("打开文件错!请下载文件,并将之复制到与源程序文件同一文件夹下。\n");  

35.             exit(1);  

36.         }  

37.         while(fscanf(fp, "%d", &x[n])!=EOF)  

38.             n++;  

39.         printf("数据量:%d, 开始排序....", n);  

40.         t1=time(0);  

41.         selectsort(x, n);  

42.         t2=time(0);  

43.         printf("用时 %d !", (int)(t2-t1));  

44.         fclose(fp);  

45.         return 0;  

46.     }  

47.       

48.     //快速排序:  

49.       

50.     #include <stdio.h>  

51.     #include <time.h>  

52.     #include <stdlib.h>  

53.     #define MAXNUM 100000  

54.     void quicksort(int data[],int first,int last)  

55.     {  

56.         int i, j, t, base;  

57.         if (first>last)  

58.             return;  

59.         base=data[first];   

60.         i=first;  

61.         j=last;  

62.         while(i!=j)   

63.         {  

64.             while(data[j]>=base && i<j)   

65.                 j--;  

66.             while(data[i]<=base && i<j)   

67.                 i++;  

68.             /*交换两个数*/  

69.             if(i<j)  

70.             {  

71.                 t=data[i];  

72.                 data[i]=data[j];  

73.                 data[j]=t;  

74.             }  

75.         }  

76.         data[first]=data[i];   

77.         data[i]=base;   

78.         quicksort(data,first,i-1);  

79.         quicksort(data,i+1,last);   

80.     }  

81.       

82.     int main()  

83.     {  

84.         int x[MAXNUM];  

85.         int n = 0;  

86.         double t1,t2;  

87.         FILE *fp;  

88.         fp = fopen("numbers.txt""r");  

89.         if(fp==NULL)  

90.         {  

91.             printf("打开文件错!请下载文件,并将之复制到与源程序文件同一文件夹下。\n");  

92.             exit(1);  

93.         }      

94.         while(fscanf(fp, "%d", &x[n])!=EOF)  

95.             n++;  

96.         printf("数据量:%d, 开始排序....", n);  

97.         t1=time(0);  

98.         quicksort(x, 0, n-1);  

99.         t2=time(0);  

100.     printf("用时 %d !", (int)(t2-t1));  

101.     fclose(fp);  

102.     return 0;  

103. }  

 

阅读全文
0 0
原创粉丝点击