首页 > 编程语言 >排序算法知识点和常见面试题

排序算法知识点和常见面试题

时间:2023-09-04 16:45:48浏览次数:53  
标签:知识点 面试题 int high low 排序

查找和排序算法知识点和常见面试题

查找

二分查找

排序算法知识点

冒泡排序

插入排序

选择排序

快速排序

二分思维+递归思维

# include <stdio.h>

int FindPos(int * a, int low, int high);
void QuickSort(int * a, int low, int high);

int main(void)
{
	int a[6] = {-2, 1, 0, -985, 4, -93};
	int i;

	QuickSort(a, 0, 5); //第二个参数表示第一个元素的下标  第三个参数表示最后一个元素的下标
	
	for (i=0; i<6; ++i)
		printf("%d  ", a[i]);
	printf("\n");

	return 0;
}

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);
	}	
}

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 high; //high可以改为low, 但不能改为val 也不能改为a[low]  也不能改为a[high]
}

归并排序

堆排序

常见面试题

标签:知识点,面试题,int,high,low,排序
From: https://www.cnblogs.com/z-qhhh/p/17677496.html

相关文章

  • 每个.NET开发都应掌握的C#集合知识点
    上篇文章讲述了C#委托和事件知识点,本文将介绍C#集合知识点。作为.NET开发人员,C#集合是你在构建强大和高效应用程序时的关键技能之一。C#集合提供了一系列丰富的数据结构,可以帮助你更好地管理、操作和组织数据。本文将介绍一些每个.NET开发人员都应该掌握的C#集合知识点。1、灵活......
  • Android并发编程高级面试题汇总(含详细解析 十六)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......
  • 前端面试题(文本与语音播放mpv3),上传喜马拉雅,便于随身听
    喜马拉雅播放地址(简介可看相关文字):https://www.ximalaya.com/album/77822188线上可下载文本与MP3文件:https://gitee.com/yoonaLin/FE_Interview_questions......
  • Java 快速排序
    思路通过一趟排序将无序数组划分成独立的两部分,其中一部分的所有元素比另外一部分的所有元素都要小,然后再按此方法对这两部分元素分别进行快速排序,整个排序过程可以递归进行,以此达到整个无序数组变成有序数组的目的。快速排序主要分为以下步骤:从无序数组中取出一个元素作为基......
  • Java 归并排序
    思路数组排序主要分为两个部分:划分数组和归并排序。划分数组:将待排序的无序数组分为左右两个部分,如果无序数组的起始元素下标为first,最后一个元素的下标为last,那么左右两部分之间的临界点下标mid=(first+last)/2,这两部分分别是arr[first…mid]和arr[mid+1…last];将上......
  • Java 堆排序
    思路从最后的非叶子节点开始,从后向前构建一个堆(大顶堆/小顶堆);即最后的非叶子节点和其下的叶子节点构成一个大顶堆,然后再找前面一个非叶子节点继续此时根节点是最大的数据,然后将根节点和最后一位进行交换交换后,排除最后一位最大值,再从根节点开始构建大顶堆重复2,3步骤代码......
  • 【面试题精讲】Java Stream排序的实现方式
    首发博客地址系列文章地址如何使用JavaStream进行排序在Java中,使用Stream进行排序可以通过sorted()方法来实现。sorted()方法用于对Stream中的元素进行排序操作。具体实现如下:对基本类型元素的排序:使用sorted()方法对Stream进行排序,默认是按照自然顺序进行排序。例如,对......
  • Java线程池面试题集
    以面试官视角万字解读线程池10大经典面试题!(这个链接里难的要命)线程池面试连环炮,你能抗住几题?(这个链接里比较正常)什么是线程池?为什么要使用线程池?线程池就是采用池化思想管理线程的工具。JUC为我们提供了ThreadPoolExecutor体系类来帮助我们管理线程、并行执行任务。顶级接......
  • Android并发编程高级面试题汇总(含详细解析 十八)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......
  • Android虚拟机原理面试题汇总(含详细解析 一)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......