This problem is inspired by the discussion about ordering specification, BSort
in the paper "Aurora: a new model and architecture for data stream management"
Problem:
There is an array A whose size is n. there is a ascending sorting with some
disorder in A. The disorder is specified as this:
For any element, there are at most 2 bigger preceding elements. In other words,
for A[i], A[i_1] > A[i], ..., A[i_m] > A[i] (i_1 > i, ..., i_m > i). m <= 2.
Design an algorithm to remove the disorder in A.
NOTE: 2 can be generalized to m.
Solution:
Run 2 bubble sort pass over A.
---------------
| | | |X| | | |
---------------
^
i
Since A[i-1] is the biggest element among the A[0..i-1], A[i-1] must be among
the 2 preceding elements which are bigger than A[i]. If A[i] >= A[i-1], there
will no preceding bigger elements for A[i]. Otherwise, switch A[i] with A[i-1].
There will be at most 1 preceding element for A[i-1]. So after the first pass,
for any element, there is at most 1 bigger preceding element.
Apply the similar analysis to pass 2. After the second pass, for any element,
there is at most 0 bigger preceding element. In other words, A is sorted.
分享到:
相关推荐
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是...
标题中的“bubble sort.zip_sorting”暗示了我们讨论的核心是排序算法中的冒泡排序。冒泡排序是一种简单直观的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历...
随机生成500个数,然后对这500数使用冒泡排序进行排序
这是computer organization课上的bubble sort源程序,谢谢大家的支持。
**标题解析:** "Bubble sort_them_labview_bubblesort_" 这个标题提到了"冒泡排序",这是计算机科学中的一种基础排序算法。它表明我们要讨论的是使用LabVIEW实现的冒泡排序方法。 **描述解读:** 描述中提到,...
冒泡排序 依次比较两个相邻的元素,如果前者大于后者就交换位置 每一趟排序之后就会把这趟中的最大值放在最后一位 重复上诉过程,直到没有在需要比较的元素为止
这是computer organization 课上的bubble sort的源程序第二版。
冒泡排序(Bubble Sort)是一种简单的排序算法,其工作原理是通过重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列...
冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成
bubble_sort.exe
在Java编程中,排序是常见的数据处理操作,而冒泡排序(Bubble Sort)是一种简单但效率较低的排序算法。这个实例展示了如何利用Java中的List接口及其实现类来实现冒泡排序。在这里,我们主要讨论以下几个知识点: 1...
【标题】"MMS_041055"指的是一个特定的学习资源编号,而"Structured Text bubble sort.rar"表明这个压缩包包含了使用Structured Text(结构化文本)编程语言实现的冒泡排序算法。Structured Text是IEC 61131-3标准中...
冒泡排序(Bubble Sort)是一种基础的排序算法,它的基本思想是通过重复遍历待排序的元素列表,比较相邻的元素并根据需要交换它们的位置,直到列表中的所有元素都按照升序或降序排列。在Scratch2这个图形化编程环境...
冒泡排序(Bubble Sort)是一种简单的排序算法。它通过重复遍历待排序的数列,依次比较相邻的元素,如果顺序错误就交换它们,直到整个数列有序。 冒泡排序的基本步骤: 从头到尾遍历数列,比较相邻的元素。 如果前一...
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。...
冒泡排序(Bubble Sort)是一种基础且直观的排序算法,其基本思想是通过不断地交换相邻的未按正确位置排列的元素来对数据序列进行排序。这个过程可以形象地理解为较轻的元素会像气泡一样逐渐“浮”到序列的顶端,故...
冒泡排序(Bubble Sort)是一种基础的排序算法,适合初学者和少儿编程教学。它通过重复遍历待排序的数列,依次比较相邻元素并交换位置,使较大的元素逐渐“冒”到数列的顶端,从而实现排序。在这个项目中,我们将...
在这个项目"bubble sort vhdl_冒泡 verilog_排序"中,开发者可能分别使用了这两种语言来实现冒泡排序的逻辑。 VHDL和Verilog的冒泡排序实现通常包括以下步骤: 1. **初始化**:设置一个计数器,用于控制外层循环,...
冒泡排序:重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成...