【发布时间】:2016-06-02 20:08:50
【问题描述】:
我有一个 char 和 int 数组:{6,A,n,D,5,1,j,e,F}。 我需要通过选择对其进行排序以实现此结果:{e,j,n,6,1,5,A,D,F}。
一开始,我想检查选择排序是否正常工作,但是 有一些问题。 我将 char 转换为 int(还有另一种解决方案可以在一个数组中同时显示整数和字符?)所以我有一个整数数组:6,65,110,68,5,1,106,101,70。 但我的排序给了我这样的效果:5,6,65,68,68,68,68,110。
void selection_sort(int tab1[], int size) {
int index;
for(int i = 0; i < size-1; i++)
{
index = i;
for(int j = i + 1; j < size; j++)
{
if(tab1[j] < tab1[index])
{
index = j;
swap(tab1[j], tab1[i]);
}
}
cout << " " << tab1[index];
}
}
int main() {
const int size = 9;
int tab[size] = {6, 'A', 'n', 'D', 5, 1, 'j', 'e', 'F'};
cout << "Before sort: " << endl << endl;
for(int i = 0; i < size; i++)
{
cout << " " << tab[i];
}
cout << endl << endl;
cout << "After sort: " << endl << endl;
selection_sort(tab,size);
return 0;
}
【问题讨论】:
-
I have an array of char and int:不。 -
char 就像一个整数(更少字节)...每个符号在内存中都是一个数字...检查一下:chip.de/ii/1/2/5/4/9/5/8/0/ascii-93c823e7009f26b0.png这是符号表(ascii)的数字...您可以像整数一样使用字符进行计算,也可以进行 操作
-
只是为了好玩,我做了你的陈述实际上所说的:一个 char 和 int 数组(我做了(一个不安全的)联合)。并先用小写字母排序,然后是数字,然后是大写字母。你可以在这里看到它:ideone.com/J30zY8
-
@bolov 谢谢,但您在 c++ 和面向对象编程中使用了特殊功能。我需要用基本知识来写这篇文章,以了解它是如何正常工作的。不过谢谢
标签: c++ arrays sorting selection