美文网首页
简单排序1-选择排序

简单排序1-选择排序

作者: gbmaotai | 来源:发表于2019-05-28 17:40 被阅读0次

    Selection sort 最简单最差的排序算法。

    image

    准备工作

    int array[];
    int arraysize;
    void swap(int array[],int a ,int b)
    {
        int temp = array[b];
        array[b] = array[a];
        array[a] = temp;
    }
    

    1)首先在未排序序列中找到最小元素,和开头的位置的元素交换位置

    minpos=0;
    for(j=0;j<arraysize;j++)
    {
        if(array[minpos] > array[j])
            minpos = j;
    }
    
    swap(array, 0, minpos);
    

    2)循环再从剩余未排序元素中继续寻找最小元素

    for(i=0;i<arraysize-1;i++)
    {
        minpos = i;
        for(j=i+1;j<arraysize;j++)
        {
            if(array[minpos] > array[j])
                minpos = j;
        }
        swap(array, i, minpos);
    }
    
    时间复杂度 O(n2),

    最好情况O(n2),最差情况O(n2)

    忽略常数项,忽略低次项

    for(i=0;i<arraysize-1;i++)
        for(j=i+1;j<arraysize;j++)
        
    (N-1)+(N-2)+...+1
    
    1/2n2 + 1/2n
    忽略完以后就是O(n2)
    
    

    不稳定

    假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定

    相关文章

      网友评论

          本文标题:简单排序1-选择排序

          本文链接:https://www.haomeiwen.com/subject/lgxjtctx.html