常用的排序方法

01

冒泡排序

相信大家最熟悉的就是冒泡排序了,这个我就不多说

直接上动图演示原理,外加代码实现冒泡排序:

 

常用的排序方法_第1张图片

C语言代码实现:

void BubbleSort(int arr[], int n){  //从小到大排序 相邻来两个数比较,将大的数字往后放  for (int i = 0; i < n - 1; i++)      //n-1是因为数组下标最大为n-1 要进行10轮比较  {    //n-1是因为数组下标最大为n-1 要进行10次比较,再减i是因为每最后的i个元素已经有序不需要继续排序    for (int j = 0; j < n - 1 - i; j++)    {      if (arr[j] > arr[j + 1])      //两两比较,将小的数据放前面      {        swap(arr, j + 1, j);        //交换arr数组arr[j+1]和arr[j]的值      }    }  }}//交换函数后面就不列举了,凡是swap都是下面代码实现的void swap(int arr[], int x, int y){  int temp = arr[x];  arr[x] = arr[y];  arr[y] = temp;}

02

选择排序

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾,重复操作。

动图演示原理,外加代码实现选择排序:

 

常用的排序方法_第2张图片

 

 

 

C语言代码实现:​​​​​​​

void SelectSort(int arr[], int n){  for (int i = 0; i < n - 1; i++)  {    for (int j = i + 1; j < n; j++)    {      if (arr[i] > arr[j])      {        swap(arr, i, j);  //交换arr数组arr[i]和arr[j]的值      }    }  }}

你可能感兴趣的:(c++,算法)