6-2 编写函数实现直接插入排序 分数 30 作者 YJ 单位 西南石油大学 编写函数实现直接插入排序。输入若干正整数,以0结束,采用直接插入排序将这些整数按照从大到小的顺序排序。 函数接口定义: void InsertSort(SqList &L); 其中 L 是待排序的关键字,采用顺序表存储。 裁判测试程序样例: #include <iostream> using namespace std; #define MAXSIZE 20 //顺序表的最大长度 typedef int ElemType; //顺序表的存储结构 typedef struct { ElemType *r;//存储空间的基地址 int length; //顺序表长度 }SqList;//顺序表类型 void InsertSort(SqList &L); void Create_Sq(SqList &L) { int i,n; cin>>n; i=1; while(n>0) { L.r[i]=n; cin>>n; i++; } L.length=i-1; } void show(SqList L) { int i; for(i=1;i<=L.length;i++) cout<<L.r[i]<<" "; } int main() { SqList L; L.r=new ElemType[MAXSIZE+1]; L.length=0; Create_Sq(L); InsertSort(L); show(L); return 0; } /* 请在这里填写答案 */ 输入样例: 5 9 1 3 0 输出样例: 在这里给出相应的输出。例如: 9 5 3 1
时间: 2024-03-22 11:41:48 浏览: 30
以下是直接插入排序的 C++ 实现:
```cpp
void InsertSort(SqList &L) {
int i, j;
for (i = 2; i <= L.length; i++) { // 从第二个元素开始,即第一个无序元素
if (L.r[i] > L.r[i-1]) continue; // 如果该元素比它前一个元素大,说明已有序,无需排序
L.r[0] = L.r[i];
for (j = i-1; L.r[j] < L.r[0]; j--) // 从后向前查找插入位置
L.r[j+1] = L.r[j]; // 向后移动元素
L.r[j+1] = L.r[0]; // 插入元素
}
}
```
这个函数实现了对顺序表 `L` 的直接插入排序。其中,`L.r` 是存储关键字的数组,`L.length` 是顺序表中元素的个数。
函数的主要思路是:从第二个元素开始循环,如果该元素比它前一个元素大,说明已有序,无需排序。否则,将该元素插入到前面有序序列的适当位置,同时将后面的元素依次向后移动一位。循环结束后,`L` 中的元素就按照从大到小的顺序排好了。
完整代码:
相关问题
7-4 使用函数实现字符串复制 分数 10 作者 王秀 单位 福州大学 输入一个正整数 re
要实现字符串复制的函数,首先需要编写一个函数,接受一个字符串和一个正整数re作为参数,并返回复制后的字符串。
```python
def copy_string(s, re):
return s * re
```
这个函数中,s代表输入的字符串,re代表输入的正整数。函数使用了字符串乘法操作符,将字符串s复制re次,然后返回复制后的字符串。
接下来,我们可以调用这个函数来实现字符串复制。例如,如果输入的字符串是"abc",正整数re是3,那么调用函数可以得到复制后的字符串"abcabcabc"。
```python
s = "abc"
re = 3
result = copy_string(s, re)
print(result) # 输出为"abcabcabc"
```
通过调用这个函数,我们可以实现将输入的字符串复制指定次数的功能。这样,无论输入的字符串是什么,我们都可以通过这个函数来实现字符串复制的操作。
r6-2 最大值函数重载 分数 10 作者 杨军 单位 四川师范大学 编写重载函数mymax可
重载函数是指同一个函数名可以在不同的参数类型下进行定义和使用。在一个程序中,如果需要对不同类型的数据进行比较,就可以使用函数重载来定义不同参数类型的比较函数。
在解决r6-2题目中的最大值函数重载问题时,我们可以根据题目要求,实现一个可以比较分数大小的重载函数mymax。
首先,我们需要定义一个结构体来表示分数,该结构体包含两个整型的成员变量,分别表示分子和分母。然后,重载函数mymax,使用该结构体作为参数类型。
mymax的实现思路如下:
1. 首先,比较两个分数的分子值的大小,如果分子值不相等,则分子大的分数大。
2. 如果分子值相等,那么比较两个分数的分母值的大小,分母小的分数大。
3. 如果分子和分母的值都相等,那么两个分数相等。
下面是mymax的具体实现:
```
struct Fraction{
int numerator;
int denominator;
};
Fraction mymax(Fraction a, Fraction b){
if(a.numerator != b.numerator){
return a.numerator > b.numerator ? a : b;
}
else if(a.denominator != b.denominator){
return a.denominator < b.denominator ? a : b;
}
else{
return a; //或者返回b,因为两个分数相等
}
}
```
通过以上的实现,我们可以在程序中调用mymax函数来比较两个分数的大小,根据返回值即可得到最大的分数。
以上就是如何用300字回答r6-2题目中的最大值函数重载问题的方法。