int array[] = {1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 101};
int length = sizeof(array) / sizeof(array[0]);
int max = array[0], min = array[0];
for(int i = 0; i < length; i++){
if(array[i] < min)
min = array[i];
if(array[i] > max)
max = array[i];
}
cout << max << " " << min;
int array[] = {1, 3, 5, -7, 9, 2, 4, 6, 8, 10, 101};
int length = sizeof(array) / sizeof(array[0]);
int max = array[0], min = array[0];
int len = length, judge = 0;
if(length%2 != 0){
len--;
judge = 1;
}
for(int i = 0; i < len; i += 2){
if(array[i] >= array[i+1]){
if(array[i] > max)
max = array[i];
if(array[i+1] < min)
min = array[i+1];
}else {
if(array[i] < min)
min = array[i];
if(array[i+1] > max)
max = array[i+1];
}
}
if(judge == 1){
if(array[len] > max)
max = array[len];
if(array[len] < min)
min = array[len];
}
cout << max << " " << min;
通过上述代码不难发现,循环里比较次数是n/2,每次array[i]和array[i+1]比较3次,开始先进行一次比较,然后根据第一次比较判断最后两次比较,因此一共比较3*n/2次。
bool isHuiWen(int n){
string temp = "";
while(n){
temp += n%10 + '0';
n /= 10;
}
int len = temp.length();
for(int i = 0; i < len/2; i++){
if(temp[i] != temp[len - i - 1]) return false;
}
return true;
}
bool isHuiWen(int n){
int m = n, temp = 0;
while(m){
temp = m%10 + temp*10;
m /= 10;
}
return n == temp ? true : false;
}
bool isPrime(int n){
if(n == 2) return true;
if(n%2 == 0 || n == 1) return false;
for(int i = 3; i <= sqrt(n); i += 2){
if(n%i == 0) return false;
}
return true;
}
bool isPrime(int n){
if(n == 0 || n == 1) return false;
for(int i = 2; i <= sqrt(n); i++){
if(n%i == 0) return false;
}
return true;
}
法一循环过程中只需要判断奇数部分就可以,偶数能被其他偶数取余为整的自然也能被2取余得整。法二显得比较繁琐,需要每次都一个个判断,当n很大时执行代价就会很大了。