我正在尝试通过按钮点击触发演示插入排序。显示输出中排序的所有步骤。
输入整数个位0-9。
有人可以帮我即兴创作我的代码! 非常感谢帮助。
O / p显示括号和coma,因为它是一个数组。 我可以在没有牙箍和昏迷的情况下获得o / p!? 而不是o / p [3,5,7,9]它应该像 - 3 5 7 9
public void btnClickMe(View v) {
Button button = (Button) findViewById(R.id.button);
EditText et = (EditText) findViewById(R.id.editText);
TextView tv = (TextView) findViewById(R.id.textView2);
insertionSort();
}
public void insertionSort(){
EditText et = (EditText) findViewById(R.id.editText);
String text = et.getText().toString();
String txt1 = text.replaceAll(","," ");
String txt= txt1.replaceAll(" ","");
int[] array = new int[txt.length()];
for (int i = 0; i < txt.length(); i++){
array[i] = Character.getNumericValue(txt.charAt(i));
}
TextView tv = (TextView) findViewById(R.id.textView2);
tv.setText("Output:");
for (int j = 1; j < array.length; j++){
int key = array[j];
int i = j - 1;
while ((i > -1) && (array[i] > key)){
array[i + 1] = array[i];
i--;
}
}
array[i + 1] = key;
tv.append(Arrays.toString(array).replaceAll(",","")+"\n");
}
我可能要求太多,但我正在努力学习android,你的帮助会教会我很多新东西。提前谢谢。
答案 0 :(得分:0)
首先,您的插入算法存在缺陷。
其次,您需要在每次附加之前重置TextView
的文字。
int[] array = {6, 4, 3, 2};
// TextView tv = (TextView) findViewById(R.id.textView2);
// Resets the text to be blank.
// tv.setText("");
for (int i = 1; i < array.length; ++i) {
int j = i;
while (j > 0 && array[j - 1] > array[j]) {
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
--j;
}
System.out.println(Arrays.toString(array));
// i.e. [4, 6, 3, 2]
// tv.append(Arrays.toString(array) + "\n");
}