算法思想课程复习总结
段大野
Start……
展开
-
选择排序
选择排序时间复杂度:O(n^2) 虽然复杂度相比其他logn级别的不占优势,但是思路清晰,操作简单。 算法思路: 在含有n个元素的数组中,以从小到大排序为例,通过n-1次遍历,每次遍历找出未确定位置的最小值,然后与第一个未确定位置元素交换,然后进行下一个位置的确定。 #include <iostream> using namespace std; template<t...转载 2018-08-02 10:12:57 · 73 阅读 · 0 评论 -
插入排序
复杂度O(n^2); 但是理论上插入排序比选择排序的效率更高,因为判断条件的存在使得插入排序可以提前终止。 算法思路:主要思想就是将新的元素插入到已经有序的数组中。通过依次与前方元素比较,找到自己应该在的位置,一旦找到,可以提前结束。 #include <iostream> using namespace std; template<typename T> void...转载 2018-08-02 13:14:19 · 84 阅读 · 0 评论 -
归并排序
归并排序复杂度O(nlogn),其中分级操作复杂度为logn,排序复杂度为n。 归并排序思路: 将数组分为左右两部分,分别对两部分进行排序后再归并。递归地执行此操作。 #include <iostream> using namespace std; template<typename T> void merge(T arr[],int left,int mid,i...转载 2018-08-02 14:45:04 · 102 阅读 · 0 评论 -
快速排序
快速排序复杂度:O(nlogn) 算法思路 依然采用递归的思想,首先选数组第一个元素作为分割点,将其余元素按照大于它和小于它分为两种(partition),利用元素交换将分割点元素置于分界线位置。递归地使用partition过程。最终实现快速排序。 #include<iostream> using namespace std; template <typename T&...转载 2018-08-02 15:30:37 · 104 阅读 · 0 评论