长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换,完成以下函数。
注意是元素0只能与娶她元素交换,而不是位置0.
/**
* 交换数组里n和0的位置
* array: 数组
* len: 数组长度
* n: 数组里要和0交换的数
*/
extern void swap_with_zero(int* array, int len, int n);
class Solution {
public:
/**
* 调用方法swap_with_zero来对array进行排序
*/
void sort(int* array, int len) {
}
};
我的答案:
#include <stdio.h>
void swap_with_zero(int* array, int len, int n){
int zIndex = -1;
int nIndex = -1;
for(int i = 0; i < len; ++i){
if(array[i] == 0){
zIndex = i;
}
if(array[i] == n){
nIndex = i;
}
}
int temp = array[zIndex];
array[zIndex] = array[nIndex];
array[nIndex] = temp;
}
class Solution {
public:
/**
* 调用方法swap_with_zero来对array进行排序
*/
void sort(int* array, int len) {
if(len <= 1){
return;
}
for(int i = len - 1; i > 0; --i){
swap_with_zero(array, len, array[i]);
int curMax = array[i];
for(int j = i; j >= 0; --j){
if(array[j] > curMax){
curMax = array[j];
}
}
swap_with_zero(array, len, curMax);
}
}
};
int main(){
Solution solution;
int a[] = {3,8,2,4,5,0,1,7,9,6};
solution.sort(a, 10);
return 0;
}