关闭

C++排序之堆排序(6)

// HeapSort.cpp : 定义控制台应用程序的入口点。 // /* 堆排序: 堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。 (1)用大根堆排序的基本思想 ① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 ② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到...
阅读(536) 评论(0)

C++排序之希尔排序(5)

// ShellSort.cpp : 定义控制台应用程序的入口点。 // /* 希尔排序: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。 先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1), 即所有记录放在同一组中进行直接插入排序为止。 平均时间...
阅读(649) 评论(0)

C++排序之插入排序(4)

// InsertSort.cpp : 定义控制台应用程序的入口点。 // /* 插入排序: 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置 ⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 ⒌ 将新...
阅读(658) 评论(0)

C++排序之选择排序(3)

// SelectSort.cpp : 定义控制台应用程序的入口点。 // /* 选择排序:对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置, 接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标), 等到循环结束的时候,我们应该找到了最小的那个数的下标了...
阅读(671) 评论(0)

C++排序之快速排序(2)

// QuickSort.cpp : 定义控制台应用程序的入口点。 // /* 快速排序(一趟): 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]; 3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将值为key的项与A[j]交换; 4)从i开始向后搜索,即由前开始向后搜索(i++...
阅读(614) 评论(0)

C++排序之冒泡排序(1)

// BubbleSort.cpp : 定义控制台应用程序的入口点。 // /* 冒泡排序:相信大家再熟悉不过了。但是现在面试,只有从最简单的写起,一个一个的分析。 算法描述:从第0个元素开始,依次往下两两进行比较,如果前面的比后面的大,则把这两个元素交换位置,这样一轮下来最大的元素肯定是在最后了。 然后又从0开始,循环到倒数第二个,一直这样循环下去。所以,第一层的循环次数是n-1,第二层的循环...
阅读(775) 评论(0)

C++循环链表实现约瑟夫问题

约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”) 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3...
阅读(1418) 评论(0)

C++循环双端队列

要理解循环双端队列,必须将这个名词分开来理解。 首先是循环队列,循环对列的top指针指向第一个插入队列的元素,rear指针指向后面插入的元素。并且为了避免“假溢出”,top指针一般指向当前元素的下一个元素,而rear指针则指向当前插入的元素。 然后是双端队列,双端队列是在队列的基础之上,头尾都可以进行操作的线性表,也就是说可以在头尾进行删除和插入操作。 最后再把这两个概念结合起来,你就能理解...
阅读(1141) 评论(0)

各个排序的稳定与非稳定分析

(1)冒泡排序 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。 (2)选择排序 选择排序是给每个位置选择当前元素最小的...
阅读(507) 评论(0)
    个人资料
    • 访问:115168次
    • 积分:2143
    • 等级:
    • 排名:第18879名
    • 原创:94篇
    • 转载:12篇
    • 译文:0篇
    • 评论:11条
    最新评论