排序算法

您所在的位置:网站首页 排序叫什么 排序算法

排序算法

2024-07-10 22:10| 来源: 网络整理| 查看: 265

选择排序:

选择排序( Selection sort)是一种简单直观的排序算法。它的工作原理是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

   选择排序算法通过选择和交换来实现排序,其排序流程如下:

(1)首先从原始数组中选择最小的1个数据,将其和位于第1个位置的数据交换。(2)接着从剩下的n-1个数据中选择次小的1个元素,将其和第2个位置的数据交换(3)然后,这样不断重复,直到最后两个数据完成交换。最后,便完成了对原始数组的从小到大的排序。

假如给定初始数据:(118,101,105,127,112)

一次排序:101,118,105,127,112

二次排序:101,105,118,127,112

三次排序:101,105,112,127,118

四次排序:101,105,112,118,127

(绿色为交换的数据)

每一趟在n-i+1(i=1,2,...,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。具体来说,假设长度为n的数组arr,要按照从小到大排序,那么先从n个数字中找到最小值min1,如果最小值min1的位置不在数组的最左端(也就是min1不等于arr[0]),则将最小值min1和arr[0]交换,接着在剩下的n-1个数字中找到最小值min2,如果最小值min2不等于arr[1],则交换这两个数字,依次类推,直到数组arr有序排列。算法的时间复杂度为O(n^2)。

代码: #include using namespace std; #define N 10 void Select_Sort(int* arr, int n) //arr为数据数组,n为数组长度 { for (int i = 0; i < n-1; i++) { int min = i; for (int j = i; j < n; j++) { if (arr[min] > arr[j]) { min = j; } } if (min != i) { swap(arr[i], arr[min]); } } } int main() { int arr[N]= { 1,4,6,3,0,2,5,9,8,7 }; Select_Sort(arr, 10); for (int i = 0; i < N; i++) { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3