第1个回答 2024-12-15
C#中的二维数组排序可以使用多种方法,这里介绍一种常见的方法:冒泡排序。对于一维数组,我们可以直接使用类似的方法进行排序。
以下是一个简单的C++示例,演示如何使用冒泡排序对一维数组进行从小到大的排序:
首先定义一个数组并输入10个整数,然后进行9轮排序。每轮排序中,进行9-i次交换,如果当前元素大于下一个元素,则交换它们的位置,实现从小到大的排序。
排序完成后,输出排序结果。代码如下:
c++
#include
void main() {
int a[10]; //定义一个数组,它的元素为10
int i, j, temp;
printf("输入10个整数:\n");
for(i = 0; i < 10; i++) {
scanf("%d", &a[i]); //依次输入10个整数
}
for(i = 0; i < 9; i++) {
for(j = 0; j < 9 - i; j++) {
if(a[j] > a[j + 1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
printf("排序结果:");
for(i = 0; i < 10; i++) {
printf("%d\t", a[i]);
}
}
若需要从小到大排序五个数,可修改上述代码,如下所示:
c++
#include
void main() {
int i, j, a[5], temp;
for(i = 0; i < 5; i++) {
printf("请输入一个数a[%d]=", i);
scanf("%d", &a[i]);
}
for(i = 4; i > 0; i--) {
for(j = 4; j > 4 - i; j--) {
if(a[j - 1] > a[j]) {
temp = a[j - 1];
a[j - 1] = a[j];
a[j] = temp;
}
}
}
for(i = 0; i < 5; i++) {
printf("%d\t", a[i]);
}
}
若需要从大到小排序,只需将条件中的"大于"改为"小于",即:
c++
if(a[j - 1] > a[j])
改为:
c++
if(a[j - 1] < a[j])
对于字符串的排序,也可以使用类似的方法,只需将整数比较改为字符串比较即可。
例如,将字符串"dcaeb"按字母顺序排序:
c++
#include
#include
#define N 6
void string_cmp(char *p) {
int i, j;
char o;
for(i = 0; i < (N - 1); i++) {
for(j = (N - 1); j > (N - 1 - i); j--) {
if(strcmp((p + i), (p + j)) > 0) {
o = *(p + i);
*(p + i) = *(p + j);
*(p + j) = o;
}
}
}
}
int main() {
int i;
char a[N] = "dcaeb ";
string_cmp(a);
for(i = 0; i < (N - 1); i++) {
printf("%c ", a[i]);
}
printf("\n");
return 0;
}
以上代码实现了字符串"dcaeb"的排序,输出结果为"abcde"。