用c++编程,对十个数分别用选择排序法和插入排序法(由大到小)排序。有必要的注释。

2. 基本要求:
(1)要求用C++模块化设计的思想来完成程序的设计;
(2)要求各个功能分别使用函数来完成,各个函数分放在不同文件中。
(3)源代码程序要求必要的注释。
做完可发我邮箱wangchao_2008305@126.com
选择排序法函数
templante<typename int>
void selesort(int p[],int n)
{
int i,j,k;
int d;
for(i=0;i<=n-2;i=i+1)
{
k=i;
for(j=i+1;j<=n-1;j=j+1)
if(p[j]<p[k]) k=j
if(k!=j){d=p[i];p[i]=p[k];p[k]=d;}
}
return;
}
插入排序法函数
template<typename int>
insort(int p[],int n)
{
int j,k;
int t;
for(j=1;j<n;j++)
{
t=p[j];k=j-1;
while((k>=0)&&(p[k]>t))
{p[k+1=p[k];k=k-1;}
p[k+1]=t;
}
return;
}
要求分别用这两个函数,帮忙写一下主函数,调用这两个子函数,分别写两个完整的程序。谢谢各位了。选择排序法一个程序,插入排序法一个程序。可以将程序运行后把c++的文件全部发到我的邮箱里。

帮你写一个吧!
// ============sort.h============
void insertSort(int arr[], int n);
void selectSort(int arr[], int n);

// ============outPut.h============
#include <iostream>
using namespace std;

// output all elements in the array
void outPut(int arr[], int n);

// ============insertSort.cpp============
#include "sort.h"
void insertSort(int arr[], int n)
{
int temp = 0;
unsigned int i = 0, j = 0;
for(i = 1; i < n; ++i)
{
temp = arr[i];
for(j =i; j > 0 && (temp> arr[j - 1]); --j)
{
arr[j] = arr[j - 1];
}
arr[j] = temp;
}
}

// ============selectSort.cpp============
#include "sort.h"
void selectSort(int arr[], int n)
{
unsigned int i = 0, j = 0, k = 0;
int temp = 0;
for (i = 0; i < n - 1; ++i)
{
k = i;
for (j = i + 1; j <n; ++j)
{
if (arr[j] > arr[k])
{
k = j; // k is a index of max element
}
}
if (k != i)
{
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}

}
}

//============outPut.cpp============
#include "outPut.h"
void outPut(int arr[], int n)
{
for (unsigned int i = 0; i < n; ++i)
{
cout << arr[i] <<'\t';
}
cout <<'\n';
}

// ============main.cpp============
#include "sort.h"
#include "outPut.h"

int main()
{
int arrayA[] = {20, 30, 10, 50, 40};
int arrayB[]= {3, 1, 5, 2, 4, 6};
insertSort(arrayA, sizeof(arrayA) / sizeof(int));
cout << "insert sort result as follows:" << endl;
outPut(arrayA, sizeof(arrayA) / sizeof(int));
selectSort(arrayB, sizeof(arrayB) / sizeof(int));
cout << "select sort result as follows:" << endl;
outPut(arrayB, sizeof(arrayB) / sizeof(int));
system("pause");
return 0;
}

你写的函数是由小到大排列啊,题目要求是由大到小,到底要怎样 ,而且模板用的也不对啊
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-04
5245645
第2个回答  2012-05-05
这么简单,你读大几哦

...个数分别用选择排序法和插入排序法(由大到小)排序。有必要的注释...
void select_sort(int *x, int n) { \/\/选择排序 int i, j, min;int t;for (i = 0; i < n - 1; i++) { \/\/ 要选择的次数:0~n-2共n-1次 min = i; \/\/ 假设当前下标为i的数最小,比较后再调整 for (j = i + 1; j < n; j++) { \/\/循环找出最小的数...

计算机 c++编程 10个数 排序 十个数排序,用不同方法实现两种排法:升序...
char c;cout<<"输入10个元素"<<endl;for(i=0;i<M;i++){ cin>>a[i];} cout<<"S:对数组进行升序排序"<<endl;cout<<"J:对数组进行降序排序"<<endl;cout<<"输入你的选择(S\/J):";cin>>c;switch(c){ case 'S':Maopao(a);break;case 'J':Charu(a);break;default:cout<<"...

...由大到小的次序将它们显示到屏幕上。用插入排序法
int i,j,k;printf("Please enter 10 number : ");for(i=0; i<10; i++) scanf("%d",&a[i]);for(i=1; i<10; i++) \/* 插入排序主算法 *\/ { k = a[i];for (j=i-1; j>=0 && k<a[j]; j--) \/* 仅仅修改此处即可修改排序方式 *\/ a[j+1] = a[j];a[...

求c语言选择排序法和 冒泡排序法代码!
选择法的算法: 假设需要对10个数进行排序,那么首先找出10个数里面的最小数,并和这个10个数的第一个(下标0)交换位置,剩下9个数(这9个数都比刚才选出来那个数大),再选出这9个数中的最小的数,和第二个位置的数(下标1)交换,于是还剩8个数(这8个数都比刚才选出来的大).. 依...

用C++建立一个线性表,输入10个数,并按从小到大显示出来
q=L.elem+i-1; \/* q 为插入位置*\/ for(p=L.elem+L.length-1;p>=q;--p) \/* 插入位置及之后的元素右移*\/ (p+1)=*p;q=e;\/* 插入e *\/ ++L.length; \/* 表长增1 *\/ return OK;} Status ListPrint_Sq(SqList L){ \/* 初始条件:顺序线性表L 已存在*\/ \/* 操作结果:...

c语言编程:对10个数冒泡排序(升序)。
int main(){ int number[10] = {95, 45, 15, 78, 84, 51, 24, 12,34,23};for (int j = 0; j < 9; j++)for (int i = 0; i < 9 - j; i++) { if(a[i] > a[i + 1]) { int temp = a[i];a[i] = a[i + 1];a[i + 1] = temp; } } fo...

C++编程实现输入10个数,输出最大值和最小值及其平均值。
1、首先在Visual Studio 2019中新建一个C语言文件,如下图所示。2、接着导入如下图所示的库文件,所需要的数学计算函数都在里面。3、然后运用scanf函数来接收用户输入的三个数字,如下图所示。4、接着利用逐个比较的方式计算三个数中的最大值,如下图所示。5、运行编写的C语言文件,会弹出如下图...

用C语言编程:用选择法对10个整数排序,10个整数用scanf函数输入_百度...
1、打开visual C++ 6.0,准备一个空白的c语言文件,引入头文件,在main函数中定义变量和数组:2、接下来用scanf函数输入的10个数,将输入的数存入到变量a中,接着进行比较排序,如果后一个数比前一个数大则利用中间变量t实现俩值互换,最后输出排序的结果:3、编译运行程序,输入任意的10个数,回车...

C++问题。这个题是这样的:输入10个数字,按各个位上的和从小到大排序,如...
我想其中一个原因是你没有交换至比如str中第10个元素师最小的,那i=0是会把它赋给str[0],i=1是会把它赋给str[1]...结果是str中所有元素都是同一个值,而且是最小值 解决办法是把两个值交换再输出 还有一个是你整个程序都有些问题,想想当j=9是str[j+1]是str[10],而str数组只有十个元...

编写程序,用选择法对10个整数按从小到大顺序排序
sort(a,10); printf("\\nafter\\n"); for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0;} 追问 怎么结果不是输入的10个数的正确排序,而是一堆很怪的数? 更多追问 本回答由提问者推荐 举报| 答案纠错 | 评论 15 9 倒霉熊lujin 采纳率:59% 来自:芝麻团 擅长: C\/C++ 编程语言 教育...

相似回答