赞
踩
用户选择数据规模分为三种10、1000、10000.选择后随机生成相关规模的数据保存在文件data_wait.txt中,每随机生成一组数据,就会覆盖前一组随机数据,便于读取排序,然后调用排序算法函数进行排序,将已排序数据序列保存于文件data_ordlely.txt中,该文件中保存多次执行结果。
该代码还有许多可修改完善之处,仅供读者参考。
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #define MaxScale 10001 int choice_Scale; //数据规模 void InsertSort(int num[], int n) { //直接插入排序,从小到大 ,下标1开始有效 int i,j; for(i = 2; i <= n; i++) { if(num[i] < num[i-1]) { num[0] = num[i]; for(j = i-1; num[j] > num[0]; j--) { num[j+1] = num[j]; } } } } void ShellSort(int num[], int n) { //希尔排序,增量选择为2的k次方减1,从小到大,起始下标1 int k, s,d,i,j; for(k = log(n)/log(2); k >= 1; k--) { d = pow(2,k)-1; // printf("\nd = %5d,k = %d\n",d,k); for(s = 1; s <= d; s++) { for(i = s+d; i <= n; i+=d) { if(num[i] < num[i-d]) { num[0] = num[i]; for(j = i-d; j > 0 && num[j] > num[0]; j-=d) { num[j+d] = num[j]; } num[j+d] = num[0]; } } } } } void BubbleSort(int num[], int n) { //冒泡排序,从小到大,起始下标1 int i,j, t , f = 1; for(i = 1; i <= n; i++) { for(j = 1; j < n-i; j ++) { if(num[j] >num[j+1]) { t = num[j]; num[j] = num[j+1]; num[j+1] = t; f = 0; } } if(f) { break; } } } //移动low、high进行记录交换 int AdjustAarry(int num[], int low
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。