//10.产生一个由10个元素组成的一维数组并输出,数组元素由随机数(0-99)构成,并实现查找某个数字在数组中的位置,如果该数字在数组中不存在,则输出-1。(分别用遍历和二分查找方式实现)。
int[] randomArray10 = new int[10];
for (int i = 0; i < randomArray10.Length; i++) {
randomArray10 [i] = Random.Range (0, 99);
}
string randomStr10 = "";
for (int i = 0; i < randomArray10.Length; i++) {
randomStr10 += (randomArray10 [i] + " ");
}
print ("10: 10位随机数数组: " + randomStr10);
//int findNum = Random.Range (0, 99);
int findNum = randomArray10[8];
//===============================遍历查找位置
bool isFind = false;
for (int i = 0; i < randomArray10.Length; i++) {
if (randomArray10 [i] == findNum) {
print("10:遍历查找:这个随机数:" + findNum + " 在数组中的位置是: " + i +"位");
isFind = true;
break;
}
}
if(isFind == false){
print ("10: -1 遍历查找:随机数为:" + findNum);
}
//===============================二分法查找
for (int i = 1; i < randomArray10.Length; i++) {
int temp = randomArray10[i];
int j = i - 1;
while (j>= 0 && temp < randomArray10 [j]) {
randomArray10 [j + 1] = randomArray10 [j];
j--;
}
randomArray10 [j + 1] = temp;
}
string sortStr10 = "";
for (int i = 0; i < randomArray10.Length; i++) {
sortStr10 += (randomArray10 [i] + " ");
}
print ("10 排序" + sortStr10);
int front = 0;
int end = randomArray10.Length - 1;
int middle = (front + end) / 2;
while (front < end && randomArray10[middle] != findNum) {
if (randomArray10 [middle] < findNum){
front = middle + 1;
}
if(randomArray10[middle] > findNum){
end = middle - 1;
}
middle = (front + end) / 2;
}
if (randomArray10 [middle] != findNum) {
print ("10: -1 二查找 没找到");
} else {
print ("10: 二分法查找:随机数为:" + findNum + "在数组" + middle + "位");
}