<span style="font-size:18px;">// 索引数组
int array[] = {3, 2, 6, 9, 8, 5, 7, 1, 4};
int count = sizeof(array) / sizeof(array[0]);
int indexs[count];
for (int i = 0; i < count; i++) {
indexs[i] = i;
}
// int flag = 1;
// for (int i = 0 ; i < count - 1 && 1 == flag; i++) {
// flag = 0;
// for (int j = 0; j < count - i - 1; j++) {
// if (array[indexs[j]] > array[indexs[j + 1]]) {
// int temp = indexs[j];
// indexs[j] = indexs[j + 1];
// indexs[j + 1] = temp;
// flag = 1;
// }
// }
// }
//索引数组 选择排序
int minIndex = 0;
for (int i = 0; i < count - 1; i++) {
minIndex = i;
for (int j = minIndex + 1; j < count; j++) {
if (array[indexs[minIndex]] > array[indexs[j]]) {
minIndex = j;
}
}
if (minIndex != i) {
int temp =indexs[minIndex];
indexs[minIndex] = indexs[i];
indexs[i] = temp;
}
}
for (int i = 0; i < count; i++) {
printf("a[%2d] = %2d\n",indexs[i], array[indexs[i]]);
}
</span>
索引数组:折半查找
<span style="font-size:18px;"> for (int i = 0 ; i < count; i++) {
printf("[%d] : %d\n", indexs[i], array[indexs[i]]);
}
int start = 0 ,end = count - 1, mid = 0;
printf("please input a number\n");
int target;
scanf("%d", &target);
//printf("%d\n", target);
while (start <= end) {
mid = (start + end) / 2;
if (array[indexs[mid]] > target) {
end = mid - 1;
} else if (array[indexs[mid]] < target) {
start = mid + 1;
} else {
break;
}
}
</span>