//选择排序

//选择排序
#include "stdafx.h"
using namespace std;
#include<vector>
#include<string>

class Solution
{
public:

    static int* bubbleSort(int* array, int len)
    {
        int current;
        int preIndex;
        for (int i = 0; i < len; i++)
        {
            current = array[i+1]; //从未排序的第一个开始
            preIndex = i;  //preIndex 是已经排序好的数组的最后一个  下标
            while (current>0 && current< array[preIndex])  //拿current 从后往前比较
            {
                // case1:
                //     { 1, 5, 7, 6, 2, 3 };  比如说6、往前找、找到5比6小、把6插在5后面
                array[preIndex + 1] = array[preIndex]; //找到比 current 小的、把current 插到这个数的前面,,,这个数往后移一位
                preIndex--;                //只要current往前走一步、之前这个位置上的就要往后移一位
                                        //这里往前查的时候、刚好找到了把    current换上去、
                                        // 这里已经找到了、但是还要走case 2、所以要--、相当于所有的位置不变
            }
            // case 2:
            array[preIndex+1] = current;  //提出来一看、已经是排好序的、直接查下一个、把index +1 就是下一个要找的
        }
        return array;
    }

};


int main()
{
    int aa[] = { 1, 5, 7, 6, 2, 3 };
    Solution sou;
    sou.bubbleSort(aa, 6);
    return 1;
}

天天向上
原文地址:https://www.cnblogs.com/hg07/p/12733683.html