[置顶] 实现冒泡排序和选择排序

     1、冒泡排序

     冒泡排序的思想就是大数沉底,小数浮起 它的做法是:对于n个需要排序的数,每次都把未排序的数中最大的数,放到它最终所在的位置。冒泡排序需要进行n-1趟。算法的C++语言实现如下:

template <class elemType> void BubbleSort(elemType a[],int length)
{
        //外层循环为n-1趟
        for(int i=0;i<length-1;i++)
        {
                //内层循环每一次让一个大数沉底
                for(int j=0;j<length-1;j++)
                {
                        if( a[j]>a[j+1] )
                        {
                                elemType temp = a[j];
                                a[j] = a[j+1];
                                a[j+1] = temp;
                        }
                }
        }
}

    

     2、选择排序

     选择排序的思想和选择排序类似,它每次选择未排序中最小的数,把它放到最终的位置上。对n个需要排序的数,选择排序也许要进行n-1。用C++实现代码如下:

template <class elemType> void SelectionSort(elemType a[],int length)
{
        //外层循环进行n-1趟
        for(int i=0;i<length-1;i++)
        {
                //标记最小值的位置
                int min = i;
                for(int j=i+1;j<length;j++)
                {
                        if( a[j]<a[min] )
                        {
                                min = j;
                        }
                }

                if( min!=i )
                {
                        elemType temp = a[i];
                        a[i] = a[min];
                        a[min] = temp;
                }
        }
} 


     选择排序和冒泡排序的时间复杂度都是:O(n^2)

你可能感兴趣的:(冒泡排序,选择排序,冒泡排序实现,选择排序实现)