首页 > 代码库 > 排序——数据结构课程作业
排序——数据结构课程作业
(╥╯^╰╥)
1 /* 2 请设计直接插入排序算法函数void insertSort(int a[],int n),对a[1]..a[n]进行升序排序。 3 并测试在不同数据规模下的排序效率。 4 */ 5 #include "Arrayio.h" 6 #define N 10000 /*N为数据量大小,因data1.txt中只有50万个数,所以自行设定N值时需让N<=500000*/ 7 8 /*请将本函数补充完整,并进行测试*/ 9 void insertSort(int a[],int n)10 {11 /*直接插入排序*/12 int i;13 for(i=2; i<=n; i++)14 {15 if(a[i]<a[i-1])16 {17 int j = i-1;18 int tmp = a[i];19 while(tmp<a[j])20 {21 a[j+1] = a[j];22 j--;23 }24 a[j+1] = tmp;25 }26 }27 }28 29 int main()30 {31 int a[N+1],n; /*数据存储在a[1]...a[N]中*/32 printf("数据初始化...\n");33 n=readData(a,N,"data1.txt"); /*从data1.txt中读入N个整数存入数组a,n为实际读入的数据个数*/34 printf("%d个数据排序中...\n",n);35 insertSort(a,n);36 saveData(a,n,"out.txt"); /*排序结果存放在out.txt文件中*/37 printf("排序结束,排序结果保存在out.txt文件中。\n");38 return 0;39 }
1 /* 2 请设计二分插入排序算法函数void binInsertSort(int a[],int n),对a[1]..a[n]进行升序排序。 3 并测试在不同数据规模下的排序效率。 4 */ 5 #include "Arrayio.h" 6 #define N 10000 /*N为数据量大小,因data1.txt中只有50万个数,所以自行设定N值时需让N<=500000*/ 7 #include <algorithm> 8 9 using namespace std;10 11 12 /*请将本函数补充完整,并进行测试*/13 void insertSort(int a[],int n)14 {15 /*直接插入排序*/16 for(int i=2; i<=n; i++)17 {18 if(a[i]<a[i-1])19 {20 int j = i-1;21 int tmp = a[i];22 while(tmp<a[j])23 {24 a[j+1] = a[j];25 j--;26 }27 a[j+1] = tmp;28 }29 }30 }31 32 void binInsertSort(int a[],int n)33 {34 for(int i=2;i<=n;i++) {35 if(a[i]<a[i-1]) {36 int pos = lower_bound(a+1,a+i,a[i]) - a;37 for(int j=i-1;j<=pos+1;j--)38 a[j+1] = a[j];39 a[pos+1] = a[i];40 }41 }42 }43 44 int main()45 {46 int a[N+1],n; /*数据存储在a[1]...a[N]中*/47 printf("数据初始化...\n");48 n=readData(a,N,"data1.txt"); /*从data1.txt中读入N个整数存入数组a,n为实际读入的数据个数*/49 printf("%d个数据排序中...\n",n);50 insertSort(a,n);51 saveData(a,n,"out.txt"); /*排序结果存放在out.txt文件中*/52 printf("排序结束,排序结果保存在out.txt文件中。\n");53 return 0;54 }
1 /* 2 请设计shell排序算法函数void shellSort(int a[],int n),对a[1]..a[n]进行升序排序。 3 并测试在不同数据规模下的排序效率。 4 */ 5 #include "Arrayio.h" 6 #define N 10000 /*N为数据量大小,因data1.txt中只有50万个数,所以自行设定N值时需让N<=500000*/ 7 8 /*请将本函数补充完整,并进行测试*/ 9 void shellSort(int a[],int n)10 {11 for(int d=n/2;d>=1;d=d/2)12 {13 for(int i=d+1;i<=n;i++) {14 int tmp = a[i];15 int j;16 for(j=i-d;j>0&&tmp<a[j];j=j-d) {17 a[j+d] = a[j];18 }19 a[j+d] = tmp;20 }21 }22 23 }24 25 int main()26 {27 int a[N+1],n; /*数据存储在a[1]...a[N]中*/28 printf("数据初始化...\n");29 n=readData(a,N,"data1.txt"); /*从data1.txt中读入N个整数存入数组a,n为实际读入的数据个数*/30 printf("%d个数据排序中...\n",n);31 shellSort(a,n);32 saveData(a,n,"out.txt"); /*排序结果存放在out.txt文件中*/33 printf("排序结束,排序结果保存在out.txt文件中。\n");34 return 0;35 }
1 /* 2 请设计简单选择排序算法函数void selectSort(int a[],int n),对a[1]..a[n]进行升序排序。 3 并测试在不同数据规模下的排序效率。 4 */ 5 #include "Arrayio.h" 6 #define N 10000 /*N为数据量大小,因data1.txt中只有50万个数,所以自行设定N值时需让N<=500000*/ 7 #include <algorithm> 8 9 using namespace std;10 11 /*请将本函数补充完整,并进行测试*/12 void selectSort(int a[],int n)13 {14 for(int i=1;i<n;i++) {15 int k = i;16 for(int j=i+1;j<=n;j++) {17 if(a[j]<a[k])18 k = j;19 }20 if(k!=i)21 {22 swap(a[i],a[k]);23 }24 }25 }26 27 int main()28 {29 int a[N+1],n; /*数据存储在a[1]...a[N]中*/30 printf("数据初始化...\n");31 n=readData(a,N,"data1.txt"); /*从data1.txt中读入N个整数存入数组a,n为实际读入的数据个数*/32 printf("%d个数据排序中...\n",n);33 selectSort(a,n);34 saveData(a,n,"out.txt"); /*排序结果存放在out.txt文件中*/35 printf("排序结束,排序结果保存在out.txt文件中。\n");36 return 0;37 }
1 /* 2 请设计筛选函数void sift(int a[],int k,int n),对a[k] 进行筛选, 3 并利用其设计堆排序算法函数void heapSort(int a[],int n), 4 对a[1]..a[n]进行升序排序。并测试在不同数据规模下的排序效率。(详见lab10_05.c) 5 */ 6 #include "Arrayio.h" 7 #define N 10000 /*N为数据量大小,因data1.txt中只有50万个数,所以自行设定N值时需让N<=500000*/ 8 9 /*请将本函数补充完整,并进行测试*/10 void sift(int a[],int k,int n)11 {12 int i,j,finished;13 i=k;14 j=2*i;15 a[0]=a[k];16 finished=0;17 while((j<=n)&&(!finished))18 {19 if((j<n)&&(a[j+1]>a[j]))20 j++;21 if(a[0]>=a[j])22 finished=1;23 else24 {25 a[i]=a[j];26 i=j;27 j=2*j;28 }29 }30 a[i]=a[0];31 }32 33 void heapSort(int a[],int n)34 {35 int i;36 for (i=n/2; i>=1; i--)37 sift(a,i,n);38 for (i=n; i>1; i--)39 {40 a[0]=a[i];41 a[i]=a[1];42 a[1]=a[0];43 sift(a,1,i-1);44 }45 }46 47 int main()48 {49 int a[N+1],n; /*数据存储在a[1]...a[N]中*/50 printf("数据初始化...\n");51 n=readData(a,N,"data1.txt"); /*从data1.txt中读入N个整数存入数组a,n为实际读入的数据个数*/52 printf("%d个数据排序中...\n",n);53 heapSort(a,n);54 saveData(a,n,"out.txt"); /*排序结果存放在out.txt文件中*/55 printf("排序结束,排序结果保存在out.txt文件中。\n");56 return 0;57 }
1 /* 2 请设计冒泡排序算法函数void bubbleSort(int a[],int n),对a[1]..a[n]进行升序排序。 3 并测试在不同数据规模下的排序效率。 4 */ 5 #include "Arrayio.h" 6 #define N 10000 /*N为数据量大小,因data1.txt中只有50万个数,所以自行设定N值时需让N<=500000*/ 7 #include <algorithm> 8 9 using namespace std;10 11 /*请将本函数补充完整,并进行测试*/12 void bubbleSort(int a[],int n)13 {14 for(int i=1;i<=n-1;i++) {15 bool flag = true;16 for(int j=1;j<=n-i;j++) {17 if(a[j]>a[j+1]) {18 swap(a[j],a[j+1]);19 flag = false;20 }21 }22 if(flag) return ;23 }24 }25 26 int main()27 {28 int a[N+1],n; /*数据存储在a[1]...a[N]中*/29 printf("数据初始化...\n");30 n=readData(a,N,"data1.txt"); /*从data1.txt中读入N个整数存入数组a,n为实际读入的数据个数*/31 printf("%d个数据排序中...\n",n);32 bubbleSort(a,n);33 saveData(a,n,"out.txt"); /*排序结果存放在out.txt文件中*/34 printf("排序结束,排序结果保存在out.txt文件中。\n");35 return 0;36 }
1 /* 2 请设计快速排序算法函数void quickSort(int a[],int low,int right),对a[low]..a[right]进行升序排序。 3 并测试在不同数据规模下的排序效率。 4 */ 5 #include "Arrayio.h" 6 #define N 10000 /*N为数据量大小,因data1.txt中只有50万个数,所以自行设定N值时需让N<=500000*/ 7 8 /*请将本函数补充完整,并进行测试*/ 9 void quickSort(int a[],int low,int right )10 {11 int i = low, j = right;12 int tmp = a[low];13 if(low<right)14 {15 while(i<j)16 {17 while(i<j&&a[j]>=tmp)18 j--;19 20 if(i<j)21 {22 a[i] = a[j];23 i++;24 }25 26 while(i<j&&a[i]<=tmp)27 i++;28 29 if(i<j)30 {31 a[j] = a[i];32 j--;33 }34 }35 a[i] = tmp;36 quickSort(a,low,j-1);37 quickSort(a,j+1,right);38 }39 }40 41 int main()42 {43 int a[N+1],n; /*数据存储在a[1]...a[N]中*/44 printf("数据初始化...\n");45 n=readData(a,N,"data1.txt"); /*从data1.txt中读入N个整数存入数组a,n为实际读入的数据个数*/46 printf("%d个数据排序中...\n",n);47 quickSort(a,1,n);48 saveData(a,n,"out.txt"); /*排序结果存放在out.txt文件中*/49 printf("排序结束,排序结果保存在out.txt文件中。\n");50 return 0;51 }
排序——数据结构课程作业
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。