首页 > 其他分享 >折中排序

折中排序

时间:2023-06-08 21:02:35浏览次数:25  
标签:count 折中 int scanf list low key 排序

#include  <stdio.h>
#include  <stdlib.h>
#define  MAX  100

int binarySearch(int list[], int n, int key, int *count) {
	int low = 0, high = n - 1, num = 0;
	int t = (low + high) / 2;
	while (low <= high) {
		if (list[t] == key) {
			num++;
			(*count) = num;
			return t;
		} else if (list[t] < key) {
			num++;
			low = t + 1;
			t = (low + high) / 2;
		} else {
			num++;
			high = t - 1;
			t = (low + high) / 2;
		}
	}
	(*count) = num;
	return -1;
}




void  sort(int  list[],  int  n) {
	int i, j, t;
	for (i = 1; i < n; i++) {
		for (j = 0; j < n - i; j++) {
			if (list[j] > list[j + 1]) {
				t = list[j + 1];
				list[j + 1] = list[j];
				list[j] = t;
			}
		}
	}

}

int  main() {
	int  i, n, key, count = 0;
	int  a[MAX];
	while (scanf("%d", &n) == 1) {
		for (i = 0; i < n; i++) {
			scanf("%d", &a[i]);
		}
		sort(a, n);
		scanf("%d", &key);
		if ((i = binarySearch(a, n, key, &count)) >= 0) {
			printf("%d  [%d]\n", i + 1, count);
		} else {
			printf("no  [%d]\n", count);
		}
	}
	return  0;
}

标签:count,折中,int,scanf,list,low,key,排序
From: https://blog.51cto.com/u_16030624/6443272

相关文章

  • 总结vue3 的一些知识点:MySQL 排序
    MySQL排序我们知道从MySQL表中使用SQLSELECT语句来读取数据。如果我们需要对读取的数据进行排序,我们就可以使用MySQL的 ORDERBY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。语法以下是SQLSELECT语句使用ORDERBY子句将查询数据排序后再返回......
  • js数组sort方法排序
    数组的sort方法可以对数组进行排序,默认是按照字符编码的顺序进行排序,可以自定义规则。sort方法会修改原数组。自定义规则简述:比较函数两个参数a和b,(a是b的后一个元素),返回a-b升序,返回b-a降序。letarr=[3,5,2,9,1];arr.sort();//默认升序arr.sort((a,b)=>{//......
  • java Comparator.comparing 排序异常
    今天在Java中使用 Comparator.comparing方法排序时遇到一个异常,明明已经使用了Comparator.comparing从小到大排序,但是1-10以内的顺序还好,>10的时候排序就乱了代码如下:List<MyRouteLongitudeAndLatitudeVo>collectVos=myRouteLongitudeAndLatitudeVos......
  • 【前端方案】-表格排序列LRU缓存方案(二)
    一.目标个人账号的设置记忆功能-避免用户每次登录之后重新对表单字段做展示设置二、存储方案轻量方案结合localstorage低容量存储(5M),根据LRU只存最近访问的20至30张表格列配置数据全量方案大内存G级别,使用indexedDb进行存储,有多少表格操作列数据就存多少,结合第三方库dexie.......
  • 随机数排序
    #include<iostream>#include<cstdlib>#include<ctime>usingnamespacestd;intmain(intargc,char**argv){ inta[10]; intm; srand(time(0)); for(inti=0;i<10;i++){ m=rand()%1000; cout<<m<<""; a[i......
  • 快速排序模板
    思路快排基本思路应该就是二分+递归,从两侧同时(实则先从右往左)往中间找,同时和参变量对比,发现位置颠倒后交换位置,然后通过二分将其一块一块的分割开,直到分割到一个元素位置,即完成了快排。代码#include<bits/stdc++.h>usingnamespacestd;inta[101],n;voidquicksort(intleft......
  • 一文理清排序算法中的直接插入、快排和希尔排序的区别
    前言在上一篇文章中,给大家介绍了冒泡排序和选择排序,这两种算法都是排序算法。实际上排序算法还有插入、希尔、快速排序等,接下来我们就来学习一下这几种排序算法。全文大约【5400】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图视频,让你更好地理......
  • 摆动排序
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){ floatarr[20],h; inti,t=0; charc; printf("pleaseputnumbers:\n"); for(i=0;i<10;i++) { scanf("%f%c",&arr[i],&c); if(c=='......
  • 算法 in Golang:Quicksort(快速排序)
    算法inGolang:Quicksort(快速排序)Quicksort(快速排序)快速排序O(nlog2^n),比选择排序要快O(n²)在日常生活中经常使用使用了D&C策略(分而治之)使用Quicksort排序数组不需要排序的数组(也就是BaseCase基线条件):[],空数组[s],单元素数组很容易排序的数组:[a,b],两......
  • 数据结构与算法分析(Java语言描述)(13)—— 原地堆排序
    packagecom.algorithm.sort;publicclassHeapSortInPlace{privateHeapSortInPlace(){}publicstaticvoidsort(Integer[]arr){intn=arr.length;//注意:我们堆的索引是从0开始的//从(最后一个元素的索引-1)/2开始......