zoukankan      html  css  js  c++  java
  • 简单选择排序(Simple Selection Sort)

    简单选择排序(Simple Selection Sort):相比较冒泡排序,每次都是两两比较交换,n个元素n-1次比较可以确定1个元素的最终位置。简单选择排序法就是通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1≤i≤n)个记录交换。

    #include<iostream>
    using namespace std;
    //简单选择排序
    int simpleSelectionSort(int* arr,int length);
    void swap(int& elem1,int& elem2);
    void test();
    void printArr(int* arr,int length);

    void swap(int& elem1,int& elem2)
    {
            int tmp = elem1;
            elem1 = elem2;
            elem2 = tmp;
    }
    int simpleSelectionSort(int* arr,int length)
    {
            if(NULL==arr||length<=0)
                    return -1;
            int minPos = 0;
            for(int idx=0;idx!=length;++idx)
            {
                    minPos = idx;
                    for(int iidx=idx+1;iidx<length;++iidx)
                    {
                            if(arr[iidx]<arr[minPos])
                            {
                                    minPos = iidx;
                            }
                    }
                    if(idx!=minPos) 
                    {
                            swap(arr[idx],arr[minPos]);
                    }
            }
            return 0;
    }
    void printArr(int* arr,int length)
    {
            if(NULL==arr||length<=0)
                    return ;
            for(int idx=0;idx!=length;++idx)
            {
                    cout<<arr[idx]<<" ";
            }
            cout<<endl;
    }
    void test()
    {
            int arr[] = {6,5,3,1,8,7,2,4};
            printArr(arr,8);
            simpleSelectionSort(arr,8);
            printArr(arr,8);
            cout<<endl;

            int arr1[] = {1,2,3,4,5,6,7,8};
            printArr(arr1,8);
            simpleSelectionSort(arr1,8);
            printArr(arr1,8);
            cout<<endl;

            int arr2[] = {2,2,2,2};
            printArr(arr2,4);
            simpleSelectionSort(arr2,4);
            printArr(arr2,4);
            cout<<endl;

            int arr3[] = {2,2,1,2};
            printArr(arr3,4);
            simpleSelectionSort(arr3,4);
            printArr(arr3,4);
            cout<<endl;

            int* arr4 = NULL;
            printArr(arr4,4);
            simpleSelectionSort(arr4,4);
            printArr(arr4,4);
            cout<<endl;
    }
    int main()
    {
            test();
            system("pause");
    }
  • 相关阅读:
    LeetCode T98.Validate Binary Search Tree/验证二叉搜索树
    LeetCode T45.Jump Game Ⅱ/跳跃游戏Ⅱ
    LeetCode T53.Maximum Subarray/最大子序和
    LeetCode T3.Longest Substring Without Repeating Characters/无重复最长子串
    LeetCode T21.Merge Two Sorted Lists/合并两个有序链表
    LeetCode T202.Happy Number/寻找快乐数
    LeetCode T1095.Find in Mountain Array/山脉数组中查找目标值
    XCTF-WEB—i-got-id-200:perl网页文件+ARGV上传造成任意文件读取
    思维导图爆破
    UNCTF2020-Reverse:re_checkin
  • 原文地址:https://www.cnblogs.com/meihao1203/p/9190623.html
Copyright © 2011-2022 走看看