2025年2月24日 星期一 甲辰(龙)年 腊月廿四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 数据结构与算法

查找、排序算法

时间:09-16来源:作者:点击数:34

冒泡排序

  • void BubbleSort(int *p, int length)
  • {
  • for (int i = 0; i < 10; i++)
  • {
  • for (int j = 0; j < 10 - i - 1; j++)
  • {
  • if (p[j] > p[j + 1])
  • {
  • swap(p[j], p[j + 1]);
  • }
  • }
  • }
  • }

选择排序

  • void SelectSort(int* arr, int n) //arr为数据数组,n为数组长度
  • {
  • for (int i = 0; i < n - 1; i++)
  • {
  • int nMin = i;
  • for (int j = i; j < n; j++)
  • {
  • if (arr[nMin] > arr[j])
  • {
  • nMin = j;
  • }
  • }
  • if (nMin != i)
  • {
  • swap(arr[i], arr[nMin]);
  • }
  • }
  • }

插入排序

  • void insertSort(int a[], int length)
  • {
  • for (int i = 1; i < length; i++)
  • {
  • for (int j = i - 1; j >= 0 && a[j + 1] < a[j]; j--)
  • {
  • swap(a[j], a[j + 1]);
  • }
  • }
  • }

快速排序

  • //定义getStandard
  • int getStandard(int a[], int i, int j)
  • {
  • int key = a[i];//关键值
  • //当i<j时候执行后面语句
  • while (i < j)
  • {
  • //当后面的元素大于等于关键值时,一直往前挪动j
  • while (i < j && a[i] >= key)
  • {
  • j--;
  • }
  • if (i < j)
  • {
  • a[i] = a[j];
  • }
  • //当前面元素小于等于关键值时,一直向后挪动i
  • while (i < j&&a[i] <= key)
  • {
  • i++;
  • }
  • if (i < j)
  • {
  • a[j] = a[i];
  • }
  • }
  • a[i] = key;
  • return i;
  • }
  • //定义无返回值QuickSort
  • void QuickSort(int a[], int low, int top)
  • {
  • if (low < top)
  • {
  • int standard = getStandard(a, low, top);
  • //递归调用
  • QuickSort(a, low, standard - 1);
  • QuickSort(a, standard + 1, top);
  • }
  • }

二分查找

  • //声明一个函数,里面有数组,数字个数和关键值
  • int BinarySearch(int array[], int n, int key)
  • {
  • int low = 0, top = n - 1;
  • int mid = 0;
  • //定义一个while循环,当low<=top时,执行后面内容
  • while (low<=top)
  • {
  • mid = (low + top) / 2;
  • if (array[mid]==key)
  • {
  • return mid;
  • }
  • if (array[mid]<key)
  • {
  • low = mid + 1;
  • }
  • else
  • {
  • top = mid - 1;
  • }
  • }
  • return -1;
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐