您的位置:首页 > 理论基础 > 数据结构算法

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

2017-09-14 10:46 190 查看
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
)!=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
)!=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.
}  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: