方法不是最好的,仅供参考。
(1)算法设计思想:
从数组末端往前遍历(下标记为i),若发现值等于x, 与按照从前往后的顺序,第一个不等于x的元素(下标记为j)进行交换。当i等于j时,结束操作。
(2)部分c语言描述
int j = 0;
int temp;
for(int i = length - 1;i >= 0;i--){ // 假定 length是整型数组number的长度
while(A[j] == x && j<i){
j++;
}
if(j == i){
break;
}
if(A[i] == x){
temp = A[j];
A[j] = A[i];
A[i] = temp;
}
}