十三、查找和排序
1.排序
冒泡
、
两个两个比,大的往后排
插入
一个个往前插,然后保持有序,跟排手牌的方式差不多
选择
快速排序
先找到第一个元素的确切位置,劈成两半
h向左移,如果h的值比9小,则h的值赋给l,h停止,l开始
然后l的值比9小,则右移,如果发现有值比9大,则赋给h,l停止,h开始
最终9的位置定下来,左边是7、0、8、2,右边是13、10
算法演示
递归的终止条件是当下标low等于下标high
void QuickSort(int * a, int low, int high)
{
int pos;
if (low < high)
{
pos = FindPos(a, low, high);
QuickSort(a, low, pos - 1);
QuickSort(a, pos + 1, high);
}
}
只要下标low小于high,就不停地向中间靠拢
int FindPos(int * a, int low, int high)
{
int val = a[low];
while (low < high)
{
while (low < high && a[high] >= val)
–high;
a[low] = a[high];
while (low < high && a[low] <= val)
++low;
a[high] = a[low];
}//终止while循环之后low和high一定是相等的
a[low] = val;
return low;
}
归并排序
先两个两个,然后四个四个,最后八个八个
2.查找
3.排序和查找的关系
排序时查找的前提
排序是重点
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!