选择排序

来源:互联网 发布:练钢琴软件 编辑:程序博客网 时间:2024/04/28 02:04

思路:
使用两个索引:begin指向数组第一个元素,end指向数组最后一个元素。规定每次循环begin所指向的值为最小值,end所指向的值为最大值。在for循环中,使数组的每个元素和最大最小值比较,符合if条件就进行交换。每次循环完就选出一个最小值和最大值放在开头和末尾。从两边往中间移动。时间复杂度O(N^2)

#include<iostream>using namespace std;void SelectSort(int *arr, int size){    int begin = 0, end = size - 1;    while (begin < end)    {        int min = begin;        int max = end;        for (int i = begin; i <= end; i++)        {            if (arr[i] < arr[min])            {                swap(arr[i], arr[min]);            }            if (arr[i] > arr[max])            {                swap(arr[i], arr[max]);            }        }        begin++;        end--;    }}
0 0
原创粉丝点击