当前位置: 首页 > news >正文

郑州旅游网站搭建班级网站建设图片

郑州旅游网站搭建,班级网站建设图片,超市代理商网站模板,内蒙中国建设银行招聘网站经典排序算法复习 分类 交换类 冒泡快排 分配类 计数排序基数排序 选择类 选择排序 堆排序 归并类 归并排序 插入类 直接插入排序 希尔排序 折半插入排序 冒泡排序 基于交换。每一轮找最大值放到数组尾部 //冒泡排序 void bubSort(int* arr,int size){bool sorte…经典排序算法复习 分类 交换类 冒泡快排 分配类 计数排序基数排序 选择类 选择排序 堆排序 归并类 归并排序 插入类 直接插入排序 希尔排序 折半插入排序 冒泡排序 基于交换。每一轮找最大值放到数组尾部 //冒泡排序 void bubSort(int* arr,int size){bool sortedfalse;while(size--!sorted){sortedtrue;//检查某一趟排序是否已完全排好for(int i0;isize;i){// printf(下标为%d的元素和%d的元素正在比较\n,i,i1);if(arr[i1]arr[i]) {swap(arr[i1],arr[i]);sortedfalse;}}// printf(第%d趟已比完\n,size);} }比较趟数是size-1次,for循环体循环次数为当前的size次,即每趟比较次数 sorted提高代码效率,只要排好序就不需再进入下一趟排序 快速排序 冒泡排序优化版本每趟将数分为大于某基准和小于某基准的两部分 //快速排序之分区 int partition(int* arr, int low, int high) { //-返回pivot下标int pivot arr[high];//用low下标值做pivotint i low, j;for (jlow; j high; j) {if (arr[j] pivot) {swap(arr[i], arr[j]);//将小于pivot的元素交换到左侧i;//大于pivot区域的第一个下标加1printf(大于pivot区域的第一个下标值为%d\n, i);}}swap(arr[i], pivot);//把pivot归位return i; } void QuickSort(int* arr, int low,int high) {if (low high) return;int ppartition(arr, low, high);QuickSort(arr, low, p - 1);QuickSort(arr, p 1, high); }i-1为已确定的小于pivot区域的下标值 传参highsize-1,否则越界 归并排序 二路归并递归实现 //归并排序之两数组合并 void merge(int* arr, int low, int mid, int high) {//创建临时数组int* tmp_arr (int*)malloc(sizeof(int) * (high - low 1));int i low, k low;int j mid 1;while (imidjhigh)//[low---mid]/ [mid1---high]两个数组tmp_arr[k] arr[i] arr[j] ? arr[i] : arr[j];while (i mid) tmp_arr[k] arr[i];while (j high) tmp_arr[k] arr[j];//复制到原数组for (i low,k0; i high; i,k)arr[i] tmp_arr[k]; } void MergeSort(int* arr, int low, int high) {if (low high) return;int mid (high low) / 2;//分MergeSort(arr, low, mid);MergeSort(arr, mid 1, high);//治merge(arr, low, mid, high); }递归“分”再依次“治”分只需两个参数low和high“治”需三个参数即两个子数组递归出口lowhigh而不是lowhigh每次将此次将排好序的数放到原区间内每次动态开辟tmp_arr数组空间 堆排序 大根堆父亲的权值比左右子树权值大孩子结点下标编号2i ,2i1 typedef struct Heap{int* root;int length; }Heap; Heap* CreateHeap(int length){Heap* heap(Heap*)malloc(sizeof(Heap));assert(heap);heap- } void pushHeap(Heap* heap,int arr); int popHeap(Heap* heap); //伪代码 for(arr){pushHeap(heap,arr[i]); } for(heap){arr[i]pop(heap) } //不定义结构体 void sift(int* array, int low, int high) {int parent low, child 2 * parent 1;//即为左孩子int tmp array[parent];//当前需要调整的树的根节点while (child high) {//child1 high为防止数组越界if (child1 high array[child] array[child 1]) child child 1;//存大孩子节点编号if (tmp array[child]) {array[parent] array[child];parent child; child 2 * parent 1;//继续向下遍历}else break;}array[parent] tmp; } void HeapSort(int* array, int size) {int i;//非叶子结点的最大编号for (i (size-1-1) / 2; i 0; i--) {sift(array, i, size-1);}//建大根堆for (i size-1; i 1; i--) {//循环n-1次完成堆排序swap(array[0],array[i]);// int tmp array[0];// array[0] array[i];// array[i] tmp;sift(array, 1, i - 1);} }sift参数为low,high,high可以取到且为size-1大根堆建立的基础是孩子也为大根堆,所以从后往前依次建堆最大数移到数组最后则表示其出堆,high-1 插入排序 把无序区的元素插入到有序区对应的位置 //直接插入排序(从小到大排) void insert_sort(int* array, int size) {int j,tmp;for (int i 1; i size; i) {//n趟tmp array[i];int end i-1;for (; end 0; end--) {//每趟比较次数因数据有序程度而变化最坏是i次则移动次数最坏是i2次if (tmp array[end]) array[end 1] array[end];else break;//如果大于等于,跳出循环!!!!end不能再--}printf(下标%d元素找到插入位置了:%d\n,i,end1);printArray(array,size);array[end1] tmp;} }找end位置,找到就跳出循环!! else break;如果不加end每次循环到1end1size 防止数组越界end1为第i个节点的插入位置
http://www.hkea.cn/news/14419990/

相关文章:

  • 策勒网站建设新万网
  • 咸宁网站设计公司井陉矿区网站建设
  • 淘宝客单页网站网站设计主要做什么
  • 嘉华伊美网站建设编程培训机构名字
  • 做网站属于程序员吗源码网站代理
  • 企业网站系统详细设计html手机版下载
  • 建设家具网站的目的及功能定位下载什么软件可以做动漫视频网站
  • 在线搭建网站深圳品牌策划vi设计
  • 网站一跳率如何制作单页网站
  • 可信网站注册网站制作合同范本
  • 免费注册网站软件WordPress最强大的主题
  • 商城网站带宽控制玉林做网站公司
  • 在线做头像网站有哪些个人网站备案简介
  • it外包方式包括重庆网站seo昔年优化
  • 龙岗中心城有学网站建设网站建设与管理领导小组
  • 个人网站模板怎么用试用网站cms
  • 做网站哪些做网站开发需要考什么证书
  • 人防工程做资料的网站做网站服务器可以挂到外地么
  • 成都建立网站的公司建设免费网站模板
  • 网站制作与维护公司网站基本建设投资内容
  • 湖北响应式网站建设企业wordpress应用教程 pdf
  • 用手机可以做网站吗wordpress 去掉w
  • 华为商城网站设计分析小锋云主机
  • 企业网站模板公司园林景观设计公司纳税义务的发生时间的确定
  • 家居设计网站推荐建设大马路小学网站
  • 蓬莱网站建设哪家专业wordpress改模版
  • 网站开发公司经营范围奇客影院wordpress
  • 深圳恒诚信企业管理有限公司临沂seo代理商
  • 邢台公司做网站wordpress表单附件上传图片
  • 请问门户网站是什么意思电商设计年终总结