pta r6-1 简单选择排序
时间: 2023-07-24 10:21:24 浏览: 267
简单选择排序是一种基于交换的排序算法,它的基本思想是:每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完为止。
具体的实现步骤如下:
1. 在待排序的元素中,选择最小的元素作为首元素,将其与序列中第一个元素进行交换;
2. 从剩余的元素中选择最小的元素作为次首元素,将其与序列中第二个元素进行交换;
3. 重复上述步骤,直到将整个序列排完为止。
下面是简单选择排序的C++代码实现:
```
void selectSort(int a[], int n) {
for (int i = 0; i < n - 1; i++) {
int minIndex = i; // 最小元素的下标
for (int j = i + 1; j < n; j++) {
if (a[j] < a[minIndex]) {
minIndex = j; // 更新最小元素的下标
}
}
if (minIndex != i) {
swap(a[i], a[minIndex]); // 交换最小元素和当前元素
}
}
}
```
相关问题
c语言pta6-1 字符串排序
在C语言中,字符串排序通常涉及到数组或字符指针的处理。如果是指对一维字符数组按照字典序(ASCII值)进行升序或降序排序,可以使用标准库函数如qsort()或者自定义排序算法,比如冒泡排序、选择排序、插入排序或快速排序等。
以下是一个简单的使用qsort()函数对字符串数组进行排序的例子,假设我们有一个包含字符串的数组:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 自定义比较函数,用于qsort()
int compare(const void *a, const void *b) {
return strcmp(*(char **)a, *(char **)b);
}
void sortStrings(char strings[][50], int n) {
qsort(strings, n, sizeof(char*), compare);
}
int main() {
char words[] = {"apple", "banana", "cherry", "date", "elderberry"};
int numWords = sizeof(words) / sizeof(words);
// 排序数组
sortStrings(words, numWords);
// 输出排序后的结果
for (int i = 0; i < numWords; i++) {
printf("%s\n", words[i]);
}
return 0;
}
```
在这个例子中,`compare`函数是qsort()的核心,它比较两个字符串并返回相应的排序顺序。`sortStrings()`函数则调用qsort()对字符串数组进行排序。
pta 7-143字符串排序
这是一道基础的字符串排序题目,可以使用STL中的sort函数来实现。
具体解法如下:
1. 首先读入字符串个数n和n个字符串,存储在一个vector<string>中。
2. 使用sort函数对vector中的字符串进行排序,排序规则为按照字符串长度从小到大排序,如果长度相等则按照字典序从小到大排序。
3. 最后按照顺序输出已排序的字符串即可。
代码示例:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(string a, string b) {
if (a.length() != b.length()) {
return a.length() < b.length();
} else {
return a < b;
}
}
int main() {
int n;
cin >> n;
vector<string> strs(n);
for (int i = 0; i < n; i++) {
cin >> strs[i];
}
sort(strs.begin(), strs.end(), cmp);
for (int i = 0; i < n; i++) {
cout << strs[i] << endl;
}
return 0;
}
```
阅读全文