标签: insertion-sort

简单的插入排序

我写了一个简单的插入排序程序,但输出不正确.

class InsertionSort{
    public static void main(String h[]){
    int[] a = {5,4,3,2,1};
    int i,j,temp;
        for(i=1;i<a.length;i++){
            j = i-1; 
            while(i>0 && a[j] > a[i]){
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
        for(int x=0; x<a.length;x++){
            System.out.println(a[x]);   
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java sorting insertion-sort

1
推荐指数
1
解决办法
2万
查看次数

这是插入排序吗?

我正在阅读"算法简介"并阅读插入排序.
我试图在没有先阅读解决方案的情况下自己实现它.

这是我的解决方案,这是插入排序吗?

#include <iostream>

using namespace std;

int main()
{
    // initialize an unsorted array
    int a[] = {5,6,4,7,3,8,2,9,0,1};

    // define variables
    int i,j,tmp;

    for (int j=1; j<10; ++j)
    {
        for (int i=0;i<j;++i)
        {
            if (a[j] < a[i])
            {
                tmp = a[j];
                a[j] = a[i];
                a[i] = tmp;
            }
        }

    }

    for (i=0;i<10;++i)
    {
        cout << a[i] << endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

好的,我已经阅读了,并理解为什么它不是插入排序...这要好得多.

   #include <iostream>

    using namespace std;

    int main()
    {
        // initialize an unsorted array
        int a[] …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm insertion-sort

0
推荐指数
1
解决办法
603
查看次数

插入排序 - 伪代码问题

我正在阅读算法入门书和伪代码

INSERTION-SORT(A)
1 for j ? 2 to length[A]
2   do key ? A[j]
3     ? Insert A[j] into the sorted sequence A[1  j - 1].
4     i ? j - 1
5     while i > 0 and A[i] > key
6      do A[i + 1] ? A[i]
7         i ? i - 1
8     A[i + 1] ? key
Run Code Online (Sandbox Code Playgroud)

虽然维基上的伪代码是

 for j ?1 to length(A)-1
     key ? A[ j ]
     > A[ j ] is added in the sorted …
Run Code Online (Sandbox Code Playgroud)

algorithm pseudocode insertion-sort

0
推荐指数
1
解决办法
5861
查看次数

插入排序与冒泡排序与选择排序的效率?

我已经写下插入排序比选择排序更快,这比冒泡排序快,并且他们所有3的运行时间都是O(n ^ 2),但是我能说什么来比较它们呢?

sorting selection bubble-sort insertion-sort

0
推荐指数
1
解决办法
2万
查看次数

将MergeSort与插入排序相结合,使其更高效

所以我有一个MergeSort算法,我希望将MergeSort与Insertion排序相结合,以减少合并的开销,问题是如何?我想使用插入排序对段进行排序,然后合并.

 public class mergesorttest{
    public static void main(String[]args){
        int d[]= {10,2,3,4,5,6,5,4,3,5,6,7,1};
        mergeSort(d,0,d.length);
        for(int x:d) System.out.print(x+" "); 
        System.out.println(); 
    }

static void mergeSort(int f[],int lb, int ub){
    //termination reached when a segment of size 1 reached -lb+1=ub
    if(lb+1<ub){
        int mid = (lb+ub)/2;
        mergeSort(f,lb,mid);
        mergeSort(f,mid,ub);
        merge(f,lb,mid,ub);
    }
}

static void merge (int f[],int p, int q, int r){
    //p<=q<=r
    int i =p; int j = q; 
    //use temp array to store merged sub-sequence
    int temp[] = new int[r-p]; int t = 0; 
    while(i<q …
Run Code Online (Sandbox Code Playgroud)

java mergesort insertion-sort

0
推荐指数
2
解决办法
2万
查看次数

有人可以向我解释为什么插入排序的最坏情况是O(n ^ 2)?

在找到插入排序的最坏情况分析时,有人可以逐步解释我们如何得到O(N ^ 2)吗?我正在阅读Cormen Intro to Algorithms一书的解释,但这种解释有点令人困惑.

sorting algorithm big-o insertion-sort

0
推荐指数
1
解决办法
5580
查看次数

使用引用在函数中传递参数有什么问题

我正在尝试实现插入排序.当我在while循环中编写swap方法时,该算法工作正常.但是当我尝试调用swap()函数时,它给出了错误的答案.具体来说,当我传递参数'j'时,它会使答案出错.你能告诉我我犯了哪个错误.(关于ideone![ http://ideone.com/MoqHgn])

#include <iostream>
using namespace std;

void swap(int *x, int *y, int *j) { 
    int temp = *x;
    *x = *y;
    *y = temp;
    *j--;
}

int main() {
    int N;
    scanf("%d", &N);
    int a[N];
    for(int i = 0; i < N; i++) {
        scanf("%d", &a[i]);
    }
    for(int i = 1; i < N; i++) {
        int j = i;
        while(j > 0 && a[j-1] > a[j]) {
            swap(&a[j-1], &a[j], &j);
            //int temp = a[j];
            //a[j] = a[j-1]; …
Run Code Online (Sandbox Code Playgroud)

c++ argument-passing insertion-sort

0
推荐指数
1
解决办法
73
查看次数

我想要一个高效的排序算法来对数组进行排序

for (int i = 1; i < data.Count; i++) 
{
    int j = i;
    while (j > 0)
    {
        if (numarray[j - 1] > numarray[j])
        {   
            int temp = numarray[j - 1];
            numarray[j - 1] = numarray[j];
            numarray[j] = temp;
            j--;

        }

        else
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我确定上面代码的排序算法是什么吗?我知道冒泡排序效率不高。如果我要改用插入排序算法,我该如何改进上面的代码。谢谢!

c# arrays sorting bubble-sort insertion-sort

0
推荐指数
1
解决办法
901
查看次数

插入排序有 ?(n) 值吗?

众所周知,插入排序的最佳情况运行时间为n,最坏情况运行时间为n 2。在这种情况下,它是否具有很大的 theta 值?

algorithm complexity-theory big-o insertion-sort

0
推荐指数
1
解决办法
74
查看次数

为什么我的排序算法比H.Cormen书中的"算法导论"更快?

我从昨天开始学习这本书,在我理解并应用了第一个算法之后,我试着去了解自己并以不同的方式看待.这是在Java中显示的算法:

public static int[] sort(int[] array)
{
    for(int i = 1; i < array.length; i++){
        int value = array[i];
        int j = i - 1;

        while(j >= 0 && array[j] > value){
            array[j + 1] = array[j];
            j--;
        }
        array[j+1] = value;
    }

    return array;
}
Run Code Online (Sandbox Code Playgroud)

这是我的:

public static int[] sortb(int[] array)
{
    for(int i = 0; i < array.length; i++){
        int value = array[i];
        int j = i;

        while(j < array.length && value > array[j]){
            array[j] = array[j + …
Run Code Online (Sandbox Code Playgroud)

java algorithm insertion-sort

-1
推荐指数
2
解决办法
114
查看次数

为什么这个插入排序算法输出无?

def insertion_sort(list):
    for index in range(1,len(list)):
        value = list[index]
        i = index - 1
        while i>=0:
            if value < list[i]:
                list[i+1] = list[i]
                list[i] = value
                i = i - 1
            else:
                break

a = [7,1,3,5,9,2,3]

print(insertion_sort(a))
Run Code Online (Sandbox Code Playgroud)

此代码取自可汗学院的视频.但是,当我尝试在Jupyter Notebook和IDLE上自己运行它时,它输出None.我无法弄清楚为什么它与视频完全相同.在此先感谢您的帮助.

python sorting algorithm insertion-sort

-1
推荐指数
1
解决办法
63
查看次数

插入排序在百万输入后停止工作

我已经实现了插入排序,我猜它很好.它从文件读取并正确排序它们输入10,100,1000,10000,10000.

但是,当我给出一百万输入时,它什么也没做.我甚至等了10分钟检查它是否太慢了.
我动态创建了我的数组,并尝试合并排序.它完美地工作了一百万输入但我无法理解为什么只有插入排序算法不能用于一百万输入.这是代码的一部分完成工作;

#include <iostream>
#include <fstream>

using namespace std;

void InsertionSort(int* array, int& size);
int main()
{
    int size;
    ifstream myfile("data.txt");
    myfile.open("data.txt");
    cout << "How many elements do you want to read" << endl;
    cin >> size;

    int* array = new int[size];
    for (int i = 0; i < size; i++) {
        myfile >> array[i];
    }

    InsertionSort(array, size);
    delete[] array;
}
void InsertionSort(int* array, int& size)
{
    int temp, j;

    for (int i = 1; i < size; i++) …
Run Code Online (Sandbox Code Playgroud)

c++ sorting algorithm input insertion-sort

-6
推荐指数
1
解决办法
533
查看次数

可汗学院 - 挑战:实施插入排序

我正在使用算法类Khan Academy for JavaScript.我写了这样的代码:

 var insert = function(array, rightIndex, value) {
        for(var i = rightIndex;
            i > 0 && array[i-1] > value;
            i--) {
            array[i] = array[i-1];
        }   
        array[i] = value; 
    };

    var insertionSort = function(array) {
    for (var st = 1; st < array.length; st++) {
        insert(array, st, array[st]);
    }
    };

    var array = [22, 11, 99, 88, 9, 7, 42];
    insertionSort(array);
    println("Array after sorting:  " + array);
    Program.assertEqual(array, [7, 9, 11, 22, 42, 88, 99]);
Run Code Online (Sandbox Code Playgroud)

而现在我想知道这里有什么问题,我无法进入下一个级别...请帮助.:)

javascript insertion-sort khan-academy

-7
推荐指数
1
解决办法
5312
查看次数