冒泡,选择,插入排序算法C++实现

来源:互联网 发布:linux matlab 激活 编辑:程序博客网 时间:2024/05/16 18:26
void Swap(int &a, int &b){    int Temp = a;    a = b;    b = Temp;}void ShowSortResult(int *Array, int ArraySize){    for (int k = 0; k < ArraySize; ++k)        cout << Array[k] << " ";    cout << endl;}/*冒泡排序的原理:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面,逐次比较,直至将最大的数移到最后。最将剩下的N-1个数继续比较,将次大数移至倒数第二位。依此规律,直至比较结束。冒泡最大放后排*/void BubbleSort(int *Array, int ArraySize){    for (int i = 0; i < ArraySize; ++i)    {        for (int j = 0; j < ArraySize - i - 1; ++j)  //第一趟将最大数挑出来,排到了最后        {            if (Array[j] > Array[j + 1])                Swap(Array[j], Array[j + 1]);        }        ShowSortResult(Array, ArraySize);    }}/*选择排序的原理:每次在无序队列中“选择”出最小值,放到有序队列的最后,并从无序队列中去除该值。选择最小放前排*/void SelectionSort(int *Array, int ArraySize){    for (int i = 0; i < ArraySize; ++i)    {        int min = i;        for (int j = i + 1; j < ArraySize; ++j)        {            if (Array[min] > Array[j])                min = j;        }        if (min != i)            Swap(Array[min], Array[i]);        ShowSortResult(Array, ArraySize);    } }/*插入排序的原理:始终定义第一个元素为有序的,将元素逐个插入到有序排列之中,其特点是要不断的移动数据,空出一个适当的位置,把待插入的元素放到里面去。1〉从第一个元素开始,该元素可以认为已经被排序2〉取出第一个未排序元素存放在临时变量temp中,在已经排序的元素序列中从后往前扫描,逐一比较3〉如果temp小于已排序元素,将该元素移到下个位置4〉重复步骤3〉,直到找到已排序的元素小于或者等于*/void InsertSort(int *Array, int ArraySize){    for (int i = 1; i < ArraySize; ++i)  //从第一个元素开始,第0个默认有序    {        int temp = Array[i];             //将第一个元素放入临时变量中        int j;        for (j = i - 1; j >= 0; j--)     //需要比较i次,但是因为需要向后移动,所以从i-1开始,>=0结束        {            if (temp < Array[j])         //如果临时变量小于当前值,则将当前值向后移动一位                Array[j + 1] = Array[j];            else                         //如果临时变量大于当前值,说明找到位置了,跳出循环                break;        }         Array[j+1] = temp;              //将临时变量放在j+1的位置上    }}int main(){    int TestArray[10] = { 4, 12, 12, 45, 3, 9, 22, 56, 32, 14 };    int ArrayLength = sizeof(TestArray) / sizeof(int);        /*******************************************/    /*           BubbleSort                    */    /*******************************************/    //cout << "Before Sort :";    //ShowSortResult(TestArray, ArrayLength);    //    //BubbleSort(TestArray, ArrayLength);    //    //cout << "After Sort :";    //ShowSortResult(TestArray, ArrayLength);        /*******************************************/    /*           SelectionSort                 */    /*******************************************/    //cout << "Before Sort :";    //ShowSortResult(TestArray, ArrayLength);    //SelectionSort(TestArray, ArrayLength);    //cout << "After Sort :";    //ShowSortResult(TestArray, ArrayLength);    /*******************************************/    /*           InsertSort                 */    /*******************************************/    cout << "Before Sort :";    ShowSortResult(TestArray, ArrayLength);    InsertSort(TestArray, ArrayLength);    cout << "After Sort :";    ShowSortResult(TestArray, ArrayLength);        system("pause");    return 0;}

参考文章:

http://blog.csdn.net/xcbeyond/article/details/7341562

http://blog.csdn.net/wdkirchhoff/article/details/41787145

阅读全文
0 0
原创粉丝点击