Adalah diketahui bahawa jadual linear A dengan panjang n menggunakan struktur storan berjujukan Sila tulis algoritma dengan kerumitan masa O(n) dan kerumitan ruang O(1). item dalam elemen jadual linear.
void Delete(ElemType A[ ],int n)
∥A是有n个元素的一维数组,本算法删除A中所有值为item的元素。
{i=1;j=n;∥设置数组低、高端指针(下标)。
while(i<j)
{while(i<j && A[i]!=item)i++; ∥若值不为item,左移指针。
if(i<j)while(i<j && A[j]==item)j--;∥若右端元素为item,指针左移
if(i<j)A[i++]=A[j--];}
Ia tidak boleh dijalankan selepas menulis semula. Ini adalah yang ditulis semula
package 线性表;
public class Work_10 {
public Work_10(){
int[] arr={2,34,4,4,5};
int item=4;
delete(arr,item,arr.length-1);
for(int a:arr){
System.out.print(a+" ");
}
}
public static void delete(int[] array,int item,int n){
int i=0,j=n;
while(i<j){
while(i<j&&array[i]!=item) i++;
if(i<j) while(i<j&&array[j]==item) j--;
if(i<j){
array[i++]=array[j--];
}
}
}
public static void main(String[] args) {
new Work_10();
}
}
Tidak tahu bagaimana untuk menukarnya?
Sila jelaskan, tuan
Jika anda ingin memadam, cari dahulu, kemudian padamkan saya akan berikan anda cari, dan anda boleh fikirkan yang lain dan tulis varian.
Oh, nombor tambahan adalah kerana nombor yang anda keluarkan adalah salah Proses pemadaman adalah baik.
Sebelum pemadaman, kandungan tatasusunan anda ialah
2,34,4,4,5
, dengan jumlah 5 elemen.Kandungan yang perlu dipadam ialah 4, bermakna hanya tinggal 3 elemen selepas pemadaman iaitu
2,34,5
Jadi output hasil anda hanya perlu mengeluarkan 3 elemen pertama tatasusunan, dan dua yang terakhir adalah elemen tidak sah.