单链表的折半查找,冒泡排序,选择排序

//选择排序

void SelectSort(SeqList* pSeqList)

{

int i = 0, j = 0;

int iMaxPos = 0;

int iMinPos = 0;

DataType temp;

for (; i < pSeqList->Size/2; ++i)

{

iMaxPos = i;

iMinPos = i;

for(j = 1; j < pSeqList->Size - i; j++)

{

if (pSeqList->arry[iMaxPos] < pSeqList->arry[j])

{

iMaxPos = j;

}

if (pSeqList->arry[iMinPos] > pSeqList->arry[j])

{

iMinPos = j;

}

}

if (iMaxPos != i)

{

temp = pSeqList->arry[iMaxPos];

pSeqList->arry[iMaxPos] = pSeqList->arry[pSeqList->Size - i - 1];

pSeqList->arry[pSeqList->Size - i - 1] = temp;

}

if (iMinPos != i)

{

temp = pSeqList->arry[iMinPos];

pSeqList->arry[iMinPos] = pSeqList->arry[i];

pSeqList->arry[i] = temp;

}

}

}

//冒泡排序

void BorbbleSort(SeqList* pSeqList)

{

int iCount = 0;

int iBegin = 0;

int iFlag = 0;

if (NULL == pSeqList)

{

return;

}

for (; iCount <pSeqList->Size - 1; iCount++)

{

iFlag = 1;

for (iBegin = 0; iBegin < pSeqList->Size - iCount - 1; ++iBegin)

{

if (pSeqList->arry[iBegin] > pSeqList->arry[iBegin+1])

{

DataType temp = pSeqList->arry[iBegin];

pSeqList->arry[iBegin] = pSeqList->arry[iBegin+1];

pSeqList->arry[iBegin+1] = temp;

iFlag = 0;

}

}

if (iFlag)

{

return;

}

}

}

// 折半查找

int BinarySearch(SeqList* pSeqList, DataType data)

{

int iLeft = 0;

int iRight = pSeqList->Size;// [)

//int iMid = (iLeft + iRight)/2;

int iMid = 0;

DataType temp;

if (NULL == pSeqList)

{

return;

}

// [0, 4]

while(iLeft < iRight)

{

iMid = iLeft + (iRight - iLeft)/2;

temp = pSeqList->arry[iMid];

if (temp < data)

{

iLeft = iMid;

}

else if (temp > data)

{

iRight = iMid - 1;

}

else

{

return iMid;

}

}

return -1;

}

时间: 2024-11-14 00:03:44

单链表的折半查找,冒泡排序,选择排序的相关文章

java 折半查找 冒泡排序 选择排序

更多查找可以参考 http://www.cnblogs.com/liuling/p/2013-7-24-01.html 这是别人的资源,感觉写的很全.可以仔细研究一下. /* 使用折半查找的前提是数据是有序(升序)的. */ class HalfSearchDemo { public static void main(String[] args) { int[] arr={1,2,3,6,2,3,5,1,8,9,3,5,2}; sop("关键字的位置:"+halfSearch_2(ar

C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序

以下列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序,然后是測试的样例.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <

C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序

下面列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序,然后是测试的例子.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <

经典排序:冒泡排序+选择排序 小结

经典排序:冒泡排序+选择排序 例 FJUTOJ 1842 冒泡排序 原理是取相邻两个数进行大小比较,判断是否交换. 以从小到大排序为例,冒泡排序就像气泡一样,最小的数慢慢浮上来,最大的数慢慢沉下去.那么完整从头到尾做一次之后最后一位就是原序列中最大的数字了.然后只需要对1~(n-1)个数字进行排序,完成后倒数第二个数字也为原序列的1~n-1元素中最大的值.如此重复,进行n-1次一定能完成排序.参考代码: 1 #include <stdio.h> 2 void BubbleSort(int *,

8.8 冒泡排序 选择排序 二分查找 递归使用

冒泡排序: #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100000 #define M 100000 void show_arr(int * a,int n) { int i; for(i = 0; i < n; i++) { printf("%d ",a[i]); } printf("\n"); } void init_arr(in

类模板,链表,直接插入排序,选择排序,起泡排序

类模板:使用户可以为类声明一种模式,使类中某些数据成员,某些成员函数的参数,某些成员函数的返回值,能取任意类型. 类模板中,类名后必须跟<模板参数标识符列表> 在主程序中定义对象时,类需说明对象是什么类型,同样用<>括号,在<>尖括号中指定所需类模板的类型. 类模板: template<模板参数表> class 类名 { 类成员声明} 在类模板以外定义成员函数,都要带上template<模板参数表>,指定成员函数属于哪个类时,模板类名后必须跟&l

链表上的冒泡、选择排序算法

做如下定义 typedef struct LNode { int num; char name[20]; struct LNode *next; } LNode, *LinkList; 冒泡排序算法 void BubbleSort(LinkList &L) { LinkList i = NULL, j = NULL; for (i = L; i->next->next != NULL; i = i->next) { for (j =i ; j->next->next

详谈单链表之合并and冒泡排序

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong> 线性表一章基本看完了,但是感觉还学得太少,应该和一些经典的算法相结合,看看自己应用的如何.不得不承认自己只是做简单的实现,并没有对代码进行太多的优化...希望各位大神莫怪~~废话少说,代码搞起..</strong></span> <strong><span style="font-fa

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定