数据结构第三周选择排序与快速排序差别
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.
}
/*
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.
}
相关文章推荐
- 【数据结构】Java实现各类经典排序算法——选择排序、冒泡排序
- Java数据结构之插入排序与选择排序的图示对比
- java实现冒泡排序,选择排序,直接插入排序,快速排序
- Java数据结构--选择排序解析
- 【数据结构】 MergeSort与QuickSort的详细分析 - 归并排序、快速排序
- (九)数据结构之简单排序算法实现:冒泡排序、插入排序和选择排序
- 数据结构排序之快速排序
- 【数据结构】 单链表的基本操作+反转+选择/直接插入/冒泡3种排序
- C语言-数据结构-选择排序-源代码
- 数据结构--向量--选择排序
- [数据结构和算法]选择排序
- 冒泡排序,选择排序,插入排序,快速排序的比较及优化
- 数据结构----选择排序
- 【数据结构】排序算法(二)之交换排序之快速排序(QuickSort)
- 快速排序、希尔排序、插入排序、选择排序、归并排序、堆排序总结
- (原创)选择排序与快速排序及D&C算法的延伸
- 第十节 数据结构之冒泡排序、选择排序
- 8 排序--选择排序,插入排序,冒泡排序,shell排序,快速排序(递归,迭代,改进版本),归并排序
- 数据结构只选择排序、冒泡排序、插入排序
- 数据结构(排序)--选择排序