我试图实施一种简短的排序算法,但它根本不起作用。有更多编程经验的人有任何提示吗?数组未排序,在最终打印中多次出现多个值。为什么呢?
public static void main(String[] args) {
// Sort the data
int[] array = {1,5,2,3,6,2,29,-2,23,3};
for (int i = 0; i<array.length-1; i++) {
if (array[i] > array[i+1]) {
array[i+1] = array[i];
array[i] = array[i+1];
}
}
// Print the data.
for (int i = 0; i<array.length; i++) {
System.out.print(i+ ", ");
}
}
答案 0 :(得分:1)
你的交换被打破了。致电array[i+1] = array[i];
后,array[i] = array[i+1];
不执行任何操作,因为array[i+1]
会被覆盖。您需要将值存储在临时变量中:
int temp = array[i+1];
array[i+1] = array[i];
array[i] = temp;
答案 1 :(得分:1)
下面:
array[i+1] = array[i];
array[i] = array[i+1];
您必须将值存储在临时变量中,就像在第二行中获得相同的值一样。
试试这个
int tmp = array[i];
array[i] = array[i+1];
array[i+1] = tmp;
答案 2 :(得分:0)
几点。看看下面是否有帮助:
应该有一些编译问题 - 半冒号丢失,在数组上尝试长度()而不是长度。
2。最后,您只需将i从0打印到数组长度。我想你要打印数组[i]。
3.你可以通过谷歌搜索找到多种排序算法。如果选择冒泡排序,请尝试使用两个循环,一个是外部直到数组长度,另一个是内部,直到(数组长度元素已经排序)。在内部比较使用临时变量。
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
答案 3 :(得分:0)
1如果要交换两个元素请使用临时变量
public void swap(int[] nums,int i,int j)
{ int tmp=nums][i];
nums[i]=nums[j];
nums[j]=tmp;
}
2这种显示方式无法对数据进行排序,这是我对数据进行排序的方法:
public void insertionSort(int nums[])
{
int j;
for(int i=1,i<nums.length-1;i++){
int tmp=nums[i];
for(j=i;j>0&&nums[j]<nums[j-1];j--)
nums[j]=nums[j-1];
nums[j]=tmp;
}
}
答案 4 :(得分:0)
你需要添加temporel变量并在每次交换后返回数组的开头
desktopMediaRequestId = chrome.desktopCapture.chooseDesktopMedia(data_sources, tab, function(streamId) {
if (streamId) {
msg.type = 'SUCESS';
msg.streamId = streamId;
} else {
msg.type = 'FAILURE';
}
port.postMessage(msg);});