选择排序算法分析

来源:互联网 发布:虚拟商品源码 编辑:程序博客网 时间:2024/04/29 20:05
#include <stdio.h>#include <stdlib.h>void select_sort(int* arr, int nLen){    int i=0, j=0, k=0;    int nVal = 0;    for (i=0; i < nLen; i++)    {        for (j=0; j < i; j++)        {            if (arr[i] < arr[j])            {                nVal = arr[i];                for (k=i; k>=j; k--)                {                    arr[k] = arr[k-1];                }                arr[j] = nVal;            }        }    }}int main(){    int arrTest[] = {4,9,3,1,5,8,6,7,2,0};    int i = 0;        for (i=0; i < 10; i++)    {        printf("%d ", arrTest[i]);    }    printf("\n\n");    select_sort(arrTest, 10);    for (i=0; i < 10; i++)    {        printf("%d ", arrTest[i]);    }    printf("\n\n");    scanf("%d", &i);    return 0;}


算法分析:
选择排序是不稳定算法,最好的情况是最好情况是已经排好顺序,只要比较 (n*(n-1))/2次即可,

最坏情况是逆序排好的,那么还要移动 O(n)次,由于是低阶故而不考虑 。选择排序的时间复杂度是 O(n^2)




原创粉丝点击