快捷搜索:  汽车  科技

c语言选择排序最简单的方法(CC基础之选择排序)

c语言选择排序最简单的方法(CC基础之选择排序)#include <iostream>#include <stdio.h>输出结果是:选择排序时最简单最容易理解的,看起来也是最憨厚的一种方式了。他的核心点就是每一次找到比循环开始处的值小的时候并不能急着去交换,因为后面可能还会有更小的,此时我们只需要记住他的下标就好了,这样一个循环下来我就能找到最小的,最后再来交换。下面附上原代码:

排序算法作为编程语言中最基础的算法,在很多高级语言中系统都封装了sort方法,并提供自定义比较方法排序。但是,这背后是怎么实现的你真的知道吗?接下来几篇就给大家讲一讲C/C 里面最基础的集中数组排序方法实现吧。

选择排序

选择排序其实是最简单直接的排序方式,下面跟着图示来看一下吧:

假设现在有一个数组{50 26 74 60 12 1 100}选择排序算法是怎么做的呢?

c语言选择排序最简单的方法(CC基础之选择排序)(1)

逻辑是这样,我们再看代码怎么实现:

c语言选择排序最简单的方法(CC基础之选择排序)(2)

输出结果是:

c语言选择排序最简单的方法(CC基础之选择排序)(3)

选择排序时最简单最容易理解的,看起来也是最憨厚的一种方式了。他的核心点就是每一次找到比循环开始处的值小的时候并不能急着去交换,因为后面可能还会有更小的,此时我们只需要记住他的下标就好了,这样一个循环下来我就能找到最小的,最后再来交换。

下面附上原代码:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int arr[7] = {50 26 74 60 12 1 100};\

//这个循环式控制比较趟数,没趟都需要找出来一个最小的

for (int i = 0; i < sizeof(arr)/sizeof(int); i )

{

int minIndex = i ;

//这个用来寻找最小元素的下标的,由于每次都找了最小的往前排,所以从i 1起始循环

for (int j = i 1; j < sizeof(arr)/sizeof(int); j )

{

if(arr[j]<arr[minIndex])minIndex = j ;

}

//minIndex!=i就说明有比arr[i]更小的了,进行位置交换

if(minIndex!=i)

{

int temp = arr[i];

arr[i] = arr[minIndex];

arr[minIndex] = temp ;

}

}

//我们来输出一下看看排序成功没

for (int i = 0; i < sizeof(arr)/sizeof(int); i )

{

cout<<arr[i]<<" ";

}

system("pause");

return 0 ;

}

后面一篇给大家讲另外一种排序方式--冒泡排序,有兴趣的记得关注小编。

猜您喜欢: