今天,学习了三种排序方法,为了加强记忆,决定对今天的学习做一个小结。话不多说,进入正题。

 冒泡排序

       比如说现在需要对一个长度为N的数组进行排序。排序的思想是,首先从数组的第一个元素开始,前一个数与后面的相邻的数进行比较如果前面的数大于后面的数,就将两数交换位置,否则位置不变。第一轮下来,数组中的每个数除了最后一个元素之外都会与后面的数进行比较,所以第一轮能够确定出数组中最大的数,并且放在了 数组的最右边。以此类推,每轮比较,都会确定一个数。所以如果想要对N个数进行排序,我们要进行N-1轮的比较来确定N-1个数的位置。每一轮比较的方式都是相同的:前一个数与后一个数进行比较,这里需要注意的是确定过的数就不需要在比较了,所以每轮比较的次数比前一轮的次数少一次。下面用代码进行说话:

                    三种基本排序(一)

因为有N-1个数需要确定位置,所以需要N-1次的循环比较,第i次循环中比较的次数为N-1-i所以此算法的时间复杂度为o(N^2).这个算法的复杂度是不变的,不会随着数据的情况而变化。

   选择排序

选择排序的思想是,每一次从待排序的数中选择最大的(最小的),放在数组的最右边,直至排完全部数为止。

 

因为数组中有N个数,所以需要依次选出N-1个数,每选一个数都需要遍历数组中待排的数字,需要遍历N-1-i次。所以此算法时间复杂度是一个o(N^2).此算法的复杂度也不会随着数据的变化而变化。

代码如下:

     三种基本排序(一)

 

插入排序

插入排序的思想是每个数与其后面相邻的数比较,如果大于后面的那就交换位置,同时再将交换来的数与前面的数依次进行比较,如果小于那么就交换位置否则位置不变。插入排序的时间复杂度是随着数据的情况改变的,所以最好情况的的时间复杂度为o(N)。最坏情况的时间复杂度为o(N^2)。

代码如下

三种基本排序(一)

  以上就是三种基本的排序算法,冒泡排序与选择排序的时间复杂是不变的。插入排序的时间复杂度是随着者数据的情况而变得。

 

      

 

 

相关文章:

  • 2021-10-14
  • 2021-10-12
  • 2021-10-08
  • 2021-09-24
  • 2021-06-04
  • 2021-11-05
  • 2022-01-09
猜你喜欢
  • 2021-06-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案