鱼C论坛

 找回密码
 立即注册
查看: 1459|回复: 0

[学习笔记] 查找和排序

[复制链接]
发表于 2019-7-31 18:26:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Julia999 于 2019-7-31 18:26 编辑
折半查找(每次取一半)

排序:
冒泡(两个两个进行比较,以满足条件的排序交换位置)
插入(一个一个往前插,保证前面的插入的都有序)
选择(从所有的元素里面找到最小的跟第一个互换,把剩下找到最小的跟第二个互换.....)
快速排序(先找到第一个元素的确切位置,这个时候将元素分成了两半,分别找到左边的第一个元素的确切位置,以及右边第一个元素的确切位置,不断重复操作(递归的思想))
归并排序(先两个两个拍,再四个四个排,再八个八个排....,最终整体排)


在这里给出快速排序的代码:
  1. #include<stdio.h>

  2. void QuickSort(int *a,int low,int high)
  3. {
  4.         int pos;
  5.         if(low<high)
  6.         {
  7.                 pos=FindPos(a,low,high);
  8.                 QuickSort(a,low,pos-1);
  9.                 QuickSort(a,pos+1,high);
  10.         }
  11. }


  12. int FindPos(int *a,int low,int high)
  13. {
  14.         int val=a[low];
  15.         while(low<high)
  16.         {
  17.                 while(low<high&&a[high]>=val)
  18.                 {
  19.                         --high;
  20.                 }
  21.                 a[low]=a[high];

  22.                 while(low<high&&a[low]<=val)
  23.                 {
  24.                         ++low;
  25.                 }
  26.                 a[high]=a[low];
  27.         }//终止外循环之后,low和high是相等的
  28.         a[low]=val;

  29.         return low;
  30. }


  31. int main()
  32. {
  33.         int a[6]={2,1,0,5,4,3};
  34.         int i;
  35.         QuickSort(a,0,5);  //第二个参数表示第一个元素的下标,第三个参数表示最后一个元素的下标
  36.         for(i=0;i<6;i++)
  37.         {
  38.                 printf("%d",a[i]);
  39.         }
  40.         printf("\n");
  41.         return 0;
  42. }
复制代码

排序和查找的关系
排序是查找的前提
排序是重点




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 15:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表