折半查找:
//折半查找
int BinarySearch(int num,int a[],int length)
{
int left=0;
int right=length-1;
while(left<right)
{
int middle=(left+right)/2;
if(a[middle]==num)
return middle;
else if(a[middle]>num)
right=middle-1;
else
left=middle+1;
}
return -1;
}
冒泡排序:
//冒泡排序
int BubbleSort(int a[],int length)
{
for(int i=0;i<length;i++)
for(int j=0;j<(length-i);j++)
{
if(a[j]>a[j+1])
swap(a[j],a[i+1]);
}
}
快速排序(有点小问题,忘了跳出迭代了):
//快速排序
void QuickSort(int a[],int left,int right)
{
int pivotpos=Partition(a,left,right);
QuickSort(a,left,pivotpos-1);
QuickSort(a,pivotpos+1,right);
}
//把小于基准的搞到左边,大于基准的去右边
int Partition(int a[],int low,int high)
{
int pivot = a[low];
int pos=low;
for(int i=low+1;i<high;i++)
{
if(a[i]<pivot)
{
Swap(a[i],a[pos]);
pos++;
}
}
return pos;
}
//选择排序,算法思想:每一次从后面n-i个待排序对象中选择一个最小的,
//放在第n个位置,话说这算法时间复杂度真的很高...
void SelectSort(int a[],int length)
{
for(int i=0;i<length;i++)
Exchange(a,i,length);
}
//从后面n-i个待排序对象中选择一个最小的,放在第n个位置
void Exchange(int a[],int i,int length)
{
int min = a[i];
int index=i;
for(int m=i+1;i<length;i++)
{
if(a[m]<min)
{
min=a[m];
index=m;
}
}
swap(a[i],a[index]);
}
//归并排序,两个已经排好顺序的数组,合并成一个数组
int* Merge(int a[],int b[],int aLength,int bLength)
{
int cLength = aLength+bLength;
int* c=new int[cLength];
int aIndex=0,bIndex=0,cIndex=0;
while(aIndex<aLength&&bIndex<bLength)
c[cIndex++]=a[aIndex]<b[bIndex]?a[aIndex++]:b[bIndex++];
while(aIndex<aLength)
c[cIndex++]=a[aIndex++];
while(bIndex<bLength)
c[cIndex++]=b[bIndex++];
return c;
}
shell排序:先比较距离远的元素,这样可以快速减少大量的无需情况,从而减轻后续工作。
分享到:
相关推荐
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
这里我们探讨的是五种常见的算法:简单选择排序、折半插入排序、冒泡排序以及两种查找算法——顺序查找和折半查找。这些算法都是用C++语言实现的。 1. **简单选择排序**: 简单选择排序是一种基础的交换排序方法。...
10种排序算法代码+综合比较代码(直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序、折半插入排序、2路插入排序),其中不仅有各种排序算法的代码,还包含10种代码在关键字...
在这个主题中,我们主要关注查找和排序算法,特别是二分查找(折半查找)算法。这些算法在实际编程中具有广泛应用,包括数据库索引、搜索引擎优化和各种计算问题的解决。 首先,我们来看查找算法。查找是数据结构中...
本资源集合包含多种经典的排序算法实现,包括冒泡排序、折半排序以及一些其他高效的排序方法。下面,我们将详细探讨这些排序算法的原理、特点和应用。 **1. 冒泡排序(Bubble Sort)** 冒泡排序是最基础的排序算法...
本资源包含了几种常见的排序算法,包括堆排序、选择排序、冒泡排序、归并排序和插入排序。这些排序算法各有特点,适用于不同的场景,并且在理解它们的工作原理后,能够帮助初学者更好地掌握编程基础。 1. **堆排序*...
七种排序算法(包括直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,归并排序) 还有两道题 1./*设计并实现一个有效的对n个整数重排的算法,使得所有负数位于非负数之前,给出算法的性能...
本主题将详细探讨希尔排序、冒泡排序、堆排序等经典的排序算法,这些都是数据结构与算法学习中的核心内容,尤其对于北邮数据结构课程来说,理解并掌握这些排序方法至关重要。 1. **插入排序**: 插入排序是一种...
采用c++描述了各种排序算法,包括选择排序 冒泡排序 插入排序 基数排序 快速排序 归并排序 。实验内容 1、创建排序类。 2、提供操作:选择排序、冒泡排序、插入排序、*基数排序、*快速排序、*归并排序。 3、*能够...
提供五种排序算法的C++实现方法,输入(待排序元素个数、排序码上界(采用随机生成数组方式)),可选择输出(原始数组、排序后数组、原始数组有序度和无序度、排序过程中数据比较次数与数据移动次数、数组中出现...
冒泡排序和折半排序是两种基础且重要的排序算法,它们在计算机科学中扮演着重要角色,尤其是在数据结构和算法的学习中。这两种方法各有特点,适用于不同的场景。 首先,我们来详细了解一下冒泡排序(Bubble Sort)...
在这个名为"aaa.rar_常用查找算法_查找和排序"的压缩包中,包含了几个经典算法的源代码实现,主要涉及冒泡排序、选择排序、插入排序以及折半查找。下面将详细介绍这些算法及其工作原理。 1. **冒泡排序**: 冒泡...
本篇将详细探讨标题和描述中提到的几种排序算法、查找算法以及图论算法。 1. **冒泡排序**: 冒泡排序是一种简单的排序算法,它通过重复遍历待排序的数列,一次比较两个元素,如果顺序错误就交换位置。这个过程会...
在编程领域,查找和排序是两个基础且至关重要的概念,特别是在C++这样的强类型语言中。这些算法在处理大量数据...如果文件中包含其他查找和排序算法的实现,如插入排序、希尔排序、堆排序等,它们同样值得研究和实践。
这里我们详细探讨一下标题和描述中提到的几种排序算法:冒泡排序、选择排序、快速排序、归并排序、插入排序、折半插入排序、希尔排序以及堆排序。 1. **冒泡排序**:冒泡排序是一种简单的交换排序方法。它通过不断...
此外,文档还提到了其他排序算法,如冒泡排序、选择排序、快速排序、归并排序、堆排序、计数排序和桶排序等,虽然没有提供具体代码,但这些都是常见的排序算法,各有其适用场景和性能特点。 3. **查找算法**: - ...
在IT领域,排序和查找是基础且至关重要的算法,它们被广泛应用于各种软件开发和数据处理中。这里我们将深入探讨标题和描述中提及的几种经典查找和排序算法,并结合C++编程语言进行讨论。 首先,我们来看查找算法。...
最后,内部排序是指在内存中完成的排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等多种方法。这些排序算法各有优缺点,适用于不同的场景。例如,快速排序在平均情况下具有较高的效率,但...
本项目旨在实现并比较六种经典的排序算法——直接插入排序、折半插入排序、起泡排序、简单选择排序、堆排序以及2-路归并排序,使用C语言编程。为了全面评估这些算法,我们将在一组随机生成的30000个整数上运行它们,...