选择排序,从字面讲,便是挑选一个系列中的原素。

例如给出一组等差数列,必须将原素由小到大排列,因此每一次排列时只须要挑选最少的因素放到等差数列的第一位。第二次排列和第三次排列是一样的,在后面的变量中挑选最少的因素放到排列原素的结尾,直至最终沒有要排列的原素。

这里有3点必须留意:

1.第一种排列是解析xml全部编码序列,挑选最少的因素放到第一位。

2.在第二次排列逐渐时,大家解析xml除第一个原素以外的后编码序列,并挑选后编码序列中最少的原素,并将其放到第一个原素后边一个部位。

3.第三次排列也是这般,直至最后一次排列打印出出由小到大的全部编码序列。

c语言选择排序法代码-c语言三种排序方法-第1张图片能够发觉,在挑选和排列的环节中,每一次最重要的是挑选最少的原素,随后对其进行排列。

梳理逻辑性,画流程图。

为了更好地让全部流程更清楚,我画了一个流程表,能够协助我之后了解。

c语言选择排序法代码-c语言三种排序方法-第2张图片这儿最困扰的地区是,自己敲代码逻辑性的情况下,非常容易发生难题,就是这个互换部位应当放到哪儿。因此,为了更好地说得更清晰,我准备用具体事例来举例说明。

外循环是遍历数组中的全部原素,汽车内循环是解析xml当今原素之间的全部原素,随后开展标准分辨,即寻找最少的原素,随后与当今原素互换部位。

当解析xml內部循环系统时,很有可能会解析xml很多低于当今原素的原素。假如在这儿互换部位,会互换很数次,与人们的预估不符合,因此互换的部位不可以放到内环线。

因而,逻辑性应当改成:内环线完毕后,挑选最少的原素,随后互换部位。

编码完成:

//选择排序#includeint main() { int Select[9] = {100, 3, 7, 6, 55, 29, 33, 10, -12}; int Temp = 0; int index = 0; for(int i = 0; i < 9; i ){ index = i; for(int j = i 1; j

能够见到,互换区域的逻辑冒泡排序和立即插入排序的思维并没有很大的差别,仅仅在这儿互换部位时,务必挑选最少的原素,随后互换部位,而不是寻找最少的原素后立即互换部位。

实验結果

c语言选择排序法代码-c语言三种排序方法-第3张图片引言

一般来说,选择排序并不会太难,但假如你开始学习算法设计,便会有一些不清楚。最重要的是梳理逻辑性。梳理逻辑性后,因为汽车内循环的首要目标是找寻最少的原素,因此以内循环系统中互换部位是没有意义的,因此必须以内循环系统以外互换部位。

总体来说不会太难,检测結果和大家最后的期望是一样的。

评论(0条)

刀客源码 游客评论