【算法】选择排序

简介: 【算法】选择排序

选择排序

实现流程

一串无序排列的数,选出最大(小)的数,与最后一个数交换位置,再在前面(除去选出的这个最大的数)选出一个最大的数与倒数第二个数交换,重复这个过程。

代码实现

#include<iostream>
using namespace std;


void swap(int& a, int& b)
{
    int temp = 0;
    temp = a;
    a = b;
    b = temp;
}

void print(int* arr, int len)
{

    for (int i = 0; i < len; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
}


void SelectSort1(int* arr, int len)
{
    for (int i = 0; i < len - 1; i++)
    {
        int max = 0;
        for (int j = 1; j < len - i; j++)
        {
            if (arr[j] > arr[max])
            {
                max = j;
            }
        }
        //如果此时找到的最大的数的下标不是最后一个
        if (max != len - i - 1)
        {
            swap(arr[len - i - 1], arr[max]);
        }
    }
    print(arr, len);
    //我不喜欢这种选择排序的写法,不够一目了然
}

void SelectSort2(int* arr, int len)
{
    int max = 0;
    int end = len - 1;
    while (end)
    {
        max = 0;//每次都以为第一个是最大的        
        for (int i = 1; i <= end; i++)
        {
            if (arr[i] > arr[max])//大于号改小于号就变成递减了
            {
                max = i;
            }
        }
        if (max != end)
        {
            swap(arr[max], arr[end]);
        }
        end--;
    }
    print(arr, len);
}


int main(void)
{
    int tempArry[] = { 10,22,5,6,1,87,99,12,333 };
    int len = sizeof(tempArry) / sizeof(tempArry[0]);
    
    //SelectSort1(tempArry, len);
    SelectSort2(tempArry, len);
    return 0;
}
相关文章
|
4月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
36 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
4月前
|
搜索推荐 Java Go
深入了解选择排序算法
深入了解选择排序算法
39 4
|
4月前
|
搜索推荐 算法
【排序算法(一)】——插入排序,选择排序 —> 深层解析
【排序算法(一)】——插入排序,选择排序 —> 深层解析
|
4月前
|
算法 Python
Python算法编程:冒泡排序、选择排序、快速排序
Python算法编程:冒泡排序、选择排序、快速排序
48 0
|
6月前
|
搜索推荐 算法 Java
经典排序算法之-----选择排序(Java实现)
这篇文章通过Java代码示例详细解释了选择排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过选择排序对数组进行升序排列。
经典排序算法之-----选择排序(Java实现)
|
8月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
8月前
|
搜索推荐
排序算法---选择排序-----详解&&代码
排序算法---选择排序-----详解&&代码
|
8月前
|
算法 搜索推荐
数据结构与算法-选择排序
数据结构与算法-选择排序
41 4
|
8月前
|
搜索推荐 算法
【C/排序算法】:堆排序和选择排序
【C/排序算法】:堆排序和选择排序
47 0
|
9月前
|
存储 算法 搜索推荐
【数据结构与算法】:选择排序与快速排序
欢迎来到排序的第二个部分:选择排序与快速排序!

热门文章

最新文章