首页 > 代码库 > 排序算法学习之快速排序
排序算法学习之快速排序
快速排序基本思想:选取一个枢轴元素(图简单可选第一个),通过对序列一次遍历(中间涉及到数的交换),将该枢轴放置到序列合适位置,保证其左边数都比它小,右边数都比它大,然后利用递归思想对其左右两个子序列进行同样排序。
快熟排序的基本实现过程:将枢轴元素key备份,序列头尾各设置一个游标——i和j,尾部游标j先移动(如果选择的最后一个元素为枢轴则i先移),直到遇到比key小的元素,将其移到原枢轴处覆盖之,此时j处元素空着了,然后再对i进行移动,直到遇到比key大的元素,将其移到右边下表为j的空白处
void QuickSort (int left, int right, int *array) { if(left>=right) return ; int i=left, j=right; int key=array[i]; while (i<j) { while (i<j && array[j]>=key) j--; array[i] = array[j]; while (i<j && array[i]<=key) i++; array[j] = array[i]; } array[i] = key; QuickSort(left, i-1, array); QuickSort(i+1, right, array); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。