查找和排序是计算机应用中较为基础同时也很重要的两个组成成分。特别是当今网络如此盛行,Internet上充斥着各种各样的数据,图片,文本,音视频等,用户如何搜寻自己想要的数据,服务者如何及时有效的将用户的需求返回,都需要这些基础算法的帮助。在本人复习数据结构的时候,特意结合网上各位大牛的神贴,以及自己的一些理解,整理了一下一些常用的查找和排序算法,如有雷同之处,请各位大牛多多包涵。

 

基于比较的算法:

1. 选择排序

    在众多的排序算法中,选择排序应该是最容易理解的一个算法了。其平均时间复杂度为O(n^2),空间复杂度则是O(1), 并且选择排序是不稳定的排序(值相同的两个元素在排序之后相互位置可能发生变化)。

    选择排序是一个递归的查找比较算法:

          (1)遍历一次尚未排序的数组元素,找到其中最大的元素,

          (2)将其与尚未排序的数组最后一个元素互换

          (3)将找到的最大元素从未排序的数组元素中取出

          (4)其余未排序数组元素,重复操作(1),直到未排序数组中没有剩余元素。

 1 void insertion_sort(int a[],int length)
 2 {
 3      for(int i=length -1; i>0;i--)
 4      {
 5          int maxData = a[i];
 6          int index =0;
            // 寻找最大元素
 7          for(int j=0;j<i;j++)
 8          {
 9              if(maxData < a[j])
10              {
11                  maxData = a[j];
12                  index =j;
13              }
14          }
            // 是否需要交换位置
15          if(maxData != a[i])
16          {
17            swap(a[i],a[index]);
18          }
19      }
20 }
selection_sort

相关文章:

  • 2021-10-19
  • 2021-12-31
猜你喜欢
  • 2022-12-23
  • 2021-05-27
  • 2021-12-17
  • 2021-06-24
  • 2021-07-12
  • 2021-04-07
  • 2022-02-03
相关资源
相似解决方案