不用库实现,自己编方法
时间: 2024-09-19 11:18:14 浏览: 49
mdc1200编解码库
如果你不想使用库函数,可以手动实现一个简单的冒泡排序算法来完成这个任务。下面是一个基础的冒泡排序示例,它会根据字符串长度进行升序排列:
```cpp
#include <iostream>
// 定义字符串长度比较函数
int compareByLength(const char* str1, const char* str2) {
while (*str1 && *str2 && *str1 == *str2) { // 直至找到第一个不同字符
++str1; // 比较下一个字符
++str2;
}
return *str1 - *str2; // 如果str1已到达结束,返回两个指针的差值(正数表示str1更大)
}
// 冒泡排序
void bubbleSortByLength(char* arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (compareByLength(arr[j], arr[j + 1]) > 0) {
// 交换字符串,如果当前字符串比后面的长
char temp[100];
strcpy(temp, arr[j]);
strcpy(arr[j], arr[j + 1]);
strcpy(arr[j + 1], temp);
}
}
}
}
int main() {
char* packets[] = {"short", "longest", "medium"};
int n = sizeof(packets) / sizeof(packets[0]);
bubbleSortByLength(packets, n);
for (int i = 0; i < n; i++) {
std::cout << "Sending packet of length " << strlen(packets[i]) << ": " << packets[i] << "\n";
}
return 0;
}
```
这个版本的手动冒泡排序会逐个比较字符串,并在长度上进行交换。注意,由于字符串可能包含非ASCII字符,所以在实际应用中,可能需要修改比较函数以适应所有字符。
阅读全文