数据结构与算法
数据结构与算法
I will,
淡然地接受努力过后依旧普通的自己
展开
-
Merge sort(归并排序) -- 分治
基本思路: 确定分界点:mid = (l + r) / 2; 递归排序left,right; 将步骤2中排序好的left,right数组进行归并,合二为一。 C++代码实现: void merge_sort(int q[], int l, int r) { if (l >= r) return; int mid = l + r >> 1; merge_sort(q, l, mid); merge_sort(q, mid + 1, r); in原创 2021-10-05 17:09:20 · 256 阅读 · 0 评论 -
Quick Sort(快排)-- 分治
基本思路: 确定分界点:q[l],q[(l+r)/2],q[r] ; 调整区间; 递归处理左右两段。 对于步骤2,有两种方法: 法1:暴力调整 创建两个数组a[],b[]; 扫描q[l~r],将<=x的数放进a[],将>=x的数放进b[]; 先将a[]放进q[],再将b[]放进q[]。 法2:优美调整 创建i(左),j(右) 指针,i负责查找>=x的数,j负责查找<=x的数,两指针同时向中间移动; 当i,j指针找到各自满足条件的值时,进行swap操作,然后向中间移动一位;原创 2021-10-05 17:08:53 · 272 阅读 · 0 评论