今天介绍的是冒泡排序的索引排序,简单的来说就是用一个有序的数组记录位置,再将有序的数组对应的数值比较大小,之后输出;
如代码:
int array[] = {3, 2, 5, 9, 1, 7, 4, 6, 8};
int count = sizeof(array) / sizeof(*array);
int indexs[count];
for (int i = 0; i < count; i++) {
indexs[i] = i;
}
for (int i = 0; i < count; i++) {
printf("[%2d] : %d\n", indexs[i], array[indexs[i]]);
}
//冒泡
int flag = 0;
for (int i = 0; i < count - 1 && 0 == flag; i++) {
flag = 1;
for (int j = 0; j < count - i - 1; j++) {
if (array[indexs[j]] > array[indexs[j + 1]]) {
{
int temp;
temp = indexs[j];
indexs[j] = indexs[j + 1];
indexs[j + 1] = temp;
flag = 0;
}
}
}
}
for (int i = 0; i < count; i++) {
printf("[%d] [%d] : %d\n", i, array[i], array[indexs[i]]);
}
运行效果: