首页 > 编程知识 正文

链表实现冒泡排序详解,选择排序c

时间:2023-05-05 21:52:28 阅读:226250 作者:2973

时间复杂度:O(N²)

    稳定性:不稳定

    排序原理:

        从前往后遍历,每一次遍历都从待排序数列的剩余数列中,选择最大(最小)数出来放置在数列前方

    排序过程:(大到小)

        1.从前向后遍历数组

        2.初始假定已排序数列为data[0],从后面的数据中查找最大值所在位置(下标)

        3.将找到的最大数与已排序的后一位做交换,已排序数列长度+1

        4.遍历完成,排序完成

    适用场景:

        数据量少、算法时间要求低稳定性好的场景中,选排是一个比较好的选择

    参数:

        data 排序数据

        lenth 数据量

        direction 排序方向 从大到小/从小到大

    源码:

void SelectionSort(int* data, int lenth, int direction){int index, i, j;for (i = 0; i < lenth - 1; i++)//从前往后遍历 将已排序的数据放在最前面{index = i;//已排序的后一位做基准比较值for (j = i + 1; j < lenth; j++)//从后续数列中查找最大(最小)数据的所在位置if (direction){if (data[index] > data[j])index = j;//找最大值}elseif (data[index] < data[j])index = j;//找最小值if (i != index)//这里的是判断找出来的数据所在位置不是紧邻着已排序后一位{DataSwap(data[index], data[i]);//交换两数}}}

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。