有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

这是Java插入排序的代码吗?为什么要使用额外的变量?

我刚刚编写了以下代码,我不确定它是否是Java中插入排序的正确实现(它看起来太类似于冒泡排序,我无法确定)

public static void insertionsort (int[] arr){
    int temp;
    for (int i = 0; i<arr.length; i++){
            for (int j = i+1; j>=0; j--){
            
             if (arr[j]<arr[j-1]){
                temp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = temp;
            }
                            
         }
        
    }
    
}

当我将我的解决方案与在线解决方案进行比较时,我注意到它们都使用一个变量来存储arr[I]。 例如:

void sort(int arr[]) 
{ 
    int n = arr.length; 
    for (int i = 1; i < n; ++i) { 
        int key = arr[i]; 
        int j = i - 1; 

        /* Move elements of arr[0..i-1], that are 
           greater than key, to one position ahead 
           of their current position */
        while (j >= 0 && arr[j] > key) { 
            arr[j + 1] = arr[j]; 
            j = j - 1; 
        } 
        arr[j + 1] = key; 
    } 
} 

这个关键变量的用途是什么?不是有点多余吗


共 (1) 个答案

  1. # 1 楼答案

    键变量的用途是保存将插入到内部循环后其排序位置的值。现在看来,您的解决方案对于插入排序来说不够有效