有序序列合并之抽丝剥茧(新手初试茅庐)

文章目录

1.合并两个有序序列

2.让合并后的数组按从小到大的心顺序排列

整体架构流程

1.先创造两个数组

2.探究让数组里面元素排列的方法

技术细节

首先,我暂且想到有一种方法解决这个问题

a.我们可以创建两个数组,但是将这两个有序数组放入同一数组中,如下

有序序列合并之抽丝剥茧(新手初试茅庐)_第1张图片

 让两个数组下标连接起来,第二个数组,下标从n开始,接着上一个循环写。说白了就是将一个数组拆分为两个数组,接下来就是将里面元素排序,从小到大。

b.这种做法原理就是每次循环都找出一个最大值,上一个循环确定了的最大值就不用参与下一个循环了

有序序列合并之抽丝剥茧(新手初试茅庐)_第2张图片

 我们这里要用到两个循环,当i++就代表着每次都有个最大值不参与下一轮,假如i=0时,先是arr[0]与arr[1]比较,如果arr[0]>arr[1],则设法让他们两个值互换,这样arr[1]对应的值就更大一些了,接着arr[1]与arr[2]比较,如果arr[1]>arr[2],则让他们两个只互换,这样arr[2]对应的值就大于arr[1]了,接着,arr[2]arr[3]比较,这里如果arr[2]12,但13却在12之前,所以这种做法只能确定最大值,剩下的值大小无法确定。

     所以当我们确定了一个最大值后,就只用比较剩下的数字了,所以第二个循环的比较次数要减少一次,又j

    例如12,14,49,1,5,23,48

第一轮比较后:12,14,1,5,23,48,49

第二轮比较后:12,1,5,14,23,48,49

第三轮比较后:1,5,12,14,23,48,49

这样就可以让元素从小到大排列了。

有序序列合并之抽丝剥茧(新手初试茅庐)_第3张图片

 

 可能讲解的不太清楚,新手请多包涵!!!

你可能感兴趣的:(算法,c语言,开发语言,学习)