插入排序代码重新检查

时间:2018-06-28 22:46:39

标签: java insertion-sort

这是我的插入排序代码。此代码有效,但这是编写插入排序的方式吗?我看了一些教程,但他们以不同的方式来做。

int thirdArray[] = { 0, 22, 1, 10, 8, 5,39 };
for (int i = 0; i < thirdArray.length - 1; i++) {
    for (int j = i + 1; j > 0; j--) {
        if (thirdArray[j] < thirdArray[j - 1]) {
            int index = thirdArray[j];
            thirdArray[j] = thirdArray[j - 1];
            thirdArray[j - 1] = index;
        }
    }
}
for (int number : thirdArray) {
    System.out.print(number + "\t");
}

2 个答案:

答案 0 :(得分:0)

如今,使用Java 7进行分类非常简单。

  Arrays.sort(thirdArray);

这将对排序后的数组的元素进行排序。

答案 1 :(得分:0)

在您的代码中,您为交换操作占用了额外的空间。但是,这是一种有效的方法,但是您可以通过以下方式进行优化

while True:
    print ("Options: ")
    print ("Enter '+' to add two numbers")
    print ("Enter '-' to subtract two numbers")
    print ("Enter '*' to multiply two numbers")
    print ("Enter '/' to divide two numbers")
    print ("Enter 'quit' to end the program")
    user_input = input(": ")

    def calculation (argnum1, argnum2):
        argnum1 = float (input("Enter your fist number: "))
        argnum2 = float (input("Enter your second number: "))
        number = argnum1
        number = argnum2
        result = argnum1 + argnum2
        print (result)
        print("-"*25)
        return number
        return result

    if user_input == "quit":
        break

    elif user_input == "+":
        calculation (argnum1, argnum2)

I expect the output of argnum1 + argnum 2 result.

在上面的代码中,您从第一个索引开始将其与先前的索引进行比较,如果较小,则覆盖其值(您已经将当前值保存在键中),最后将其放置在正确的位置。我们可以保证在排序之后,对左侧的所有元素都进行了排序。插入排序的最坏情况性能:О(n ^ 2)最佳情况下性能:O(n)。通过交换,我们增加了可以避免的复杂性。