几种排序算法

1. 冒泡排序:比较前后两个相邻的元素,如果大于则进行交换,这样每次遍历一篇数组后,最大的一个数据就沉到了数组的N-1位置上。

  两种改进:a. 如果当前遍历,没有发生交换,则已经有序;b. 记录最后发生数据交换的位置i,这个位置之后的数据显然已经有序,则下一次遍历只需要对i之前的数据冒泡即可。

void BubbleSort3(int a[], int n)
{
    int j, k;
    int flag;
    
    flag = n;
    while (flag > 0)
    {
        k = flag;
        flag = 0;
        for (j = 1; j < k; j++)
            if (a[j - 1] > a[j])
            {
                Swap(a[j - 1], a[j]);
                flag = j;
            }
    }
}

冒泡排序的效率较低,数据规模较小时,可以使用。

2. 直接插入排序是将数据插入到已经排好序的数组中,直接选择排序是从后面未排序的数组中选择一个最小的,append到前面已经排序的后面。

 

http://blog.csdn.net/morewindows/article/details/6665714

 

posted on 2015-06-11 14:32  keketse  阅读(176)  评论(0编辑  收藏  举报

导航