Gnome排序(地精排序),起初由Hamid Sarbazi-Azad 于2000年提出,并被称为stupid排序,后来被Dick Grune描述并命名为“地精排序”,作为一个排序算法,和插入排序类似,除了移动一个元素到最终的位置,是通过交换一系列的元素实现,就像冒泡排序一样。概念上十分简单,不需要嵌套循环。时间复杂度为O,但是如果初始数列基本有序,时间复杂度将降为O(n)。实际上Gnome算法可以和插入排序算法一样快。平均运行时间为O.
Gnome排序算法总是查找最开始逆序的一对相邻数,并交换位置,基于交换两元素后将引入一个新的相邻逆序对,并没有假定当前位置之后的元素已经有序
Description
下面gnome排序算法的伪代码,使用0起始索引数组:
procedure gnomeSort(a[])
pos := 1
while pos < length(a)
if (a[pos] >= a[pos-1])
pos := pos + 1
else
swap a[pos] and a[pos-1]
if (pos > 1)
pos := pos - 1
end if
end if
end while
end procedure
pos := 1
while pos < length(a)
if (a[pos] >= a[pos-1])
pos := pos + 1
else
swap a[pos] and a[pos-1]
if (pos > 1)
pos := pos - 1
end if
end if
end while
end procedure
实例
给定一个无序数组, a = [5, 3, 2, 4], gnome排序将在while循环中执行如下的步骤. "current position"采用加粗黑体:
[5, 3, 2, 4] | a[pos] < a[pos-1], swap: |
[3, 5, 2, 4] | a[pos] >= a[pos-1], increment pos: |
[3, 5, 2, 4] | a[pos] < a[pos-1], swap and pos > 1, decrement pos: |
[3, 2, 5, 4] | a[pos] < a[pos-1], swap and pos <= 1, increment pos: |
[2, 3, 5, 4] | a[pos] >= a[pos-1], increment pos: |
[2, 3, 5, 4] | a[pos] < a[pos-1], swap and pos > 1, decrement pos: |
[2, 3, 4, 5] | a[pos] >= a[pos-1], increment pos: |
[2, 3, 4, 5] | a[pos] >= a[pos-1], increment pos: |
[2, 3, 4, 5] | pos == length(a), finished. |
#include<stdio.h> #include<string.h> #include<math.h> #include<ctype.h> #include<stdbool.h> void swap(int *a, int *b) //交换两元素的值 { int t; t=*a; *a=*b; *b=t; } void printArray(int a[], int count) //打印数组元素 { int i; for(i=0; i<count; i++) printf("%d ",a[i]); printf("\n"); } void gnome_sort(int *a, int len) //gnome排序算法 { int pos=1; while(pos<len) { if(a[pos]>=a[pos-1]) { pos++; } else { swap(&a[pos],&a[pos-1]); if(pos>1) pos--; } } } int main(void) { int a[]={3, 5, 4, 6, 9, 7, 8, 0, 1}; int n=sizeof(a)/sizeof(*a); printArray(a,n); gnome_sort(a,n); printArray(a,n); return 0; }
相关推荐
在本项目中,我们主要关注两个排序算法:插入排序(Insertion Sort)和Gnome排序(Gnome Sort)。这两个算法都是计算机科学中的基础排序方法,主要用于理解和教学排序算法的工作原理。接下来,我们将深入探讨这两种...
标题 "Python-SortGNOMEShellApps按类别排序GNOME应用仪表盘" 指的是一种使用Python编写的脚本或工具,目的是优化GNOME桌面环境的用户体验,特别是针对GNOME Shell的应用程序启动器(也称为应用仪表盘)。在GNOME ...
Sorting Visualiser这是一个使用flutter框架构建的简单的...目前已经实现了7种排序算法,即气泡排序,选择排序,插入排序,快速排序,合并排序,堆排序和gnome排序。 运行安装Git和Flutter sdk的步骤。 复制url专业版
python 排序算法之GnomeSort
排序算法可视化工具 用C#Windows窗体制作的排序算法可视...1.03-添加了Gnome排序,更改了GUI大小 1.02-添加梳状排序 1.01-添加了外壳排序 1.00-发布于09/06/20 用法 只需从上面的链接下载应用程序并安装,不需要其他依
侏儒排序(Gnome Sort) 堆排序(Heap Sort) 插入排序(Insertion Sort) 引入排序(Intro Sort) 迭代归并排序(Iterative Merge Sort) 归并插入排序(Merge Insertion Sort) 归并排序(Merge Sort) 最高有效...
6. **地精排序**(Gnome Sort): 地精排序类似于儿童玩的堆积木,每次检查当前元素与其前面的元素,如果顺序错误就交换它们,直到整个序列有序。 7. **地精排序2,地精排序3**: 这是地精排序的变种,可能包含...
12. **堆排序的变种:**如鸡尾酒排序(双向冒泡排序)、 gnome sort(园丁排序)等。 13. **图解排序**:如Timsort,是Python等语言内置的排序算法,结合了插入排序和归并排序的特点,对已部分有序的数据表现优秀。...
经典排序算法 - 地精排序Gnome Sort 经典排序算法 - 奇偶排序Odd-even sort 经典排序算法 - 梳排序Comb sort 经典排序算法 - 耐心排序Patience Sorting 经典排序算法 - 珠排序Bead Sort 经典排序算法 - 计数...
Gnome Sort和Library Sort则分别具有O(n^2)和O(n log n)的时间复杂度,可能需要额外的空间。 接下来,我们讨论一些不稳定的排序算法。不稳定的排序算法不会保持相等元素的原始顺序。选择排序(Selection Sort)是最...
3. **游戏管理**:应用程序允许用户组织和管理他们的游戏收藏,包括添加、删除和排序游戏。这使得用户可以便捷地访问和控制他们的游戏集合。 4. **自定义配置**:用户可以根据个人喜好自定义控制器映射,以适应不同...
这些文件通常以.js为扩展名,包含了实现窗口排序逻辑的核心代码。 2. **metadata.json**:这是GNOME扩展的配置文件,包含了扩展的基本信息,如扩展的名称、版本、描述以及所需的GNOME Shell版本等。 3. **...
3. **排序与预览**:在合并前,用户可以调整音频文件的播放顺序,通过内置的预览功能检查合并效果,确保音频的连续性和一致性。 4. **参数设置**:虽然gwavmerger主要用于WAV格式的音频,但可能也支持其他音频格式...
GS算法,全称为Gnome Sort(也称 gnome sort 或 stupid sort),是一种简单的排序算法,适合初学者学习。它的工作原理类似我们日常生活中整理物品的过程,想象你在一排物品中,从左到右检查每个物品是否在正确的位置...
例如,你可以构建一个文件搜索工具,利用这些元数据进行高级查询,或者创建一个文件管理系统,根据元数据信息对文件进行分类和排序。 为了使用`gvfs-meta-node-master`压缩包,你需要按照常规步骤解压文件,然后在...
当前算法尚未按最佳分数对比赛进行排序。 如果您以“ /”开始搜索,它将把所有搜索词(用空格分隔)解释为正则表达式,必须全部匹配。 此扩展程序的灵感来自 特征 模糊匹配当前打开的窗口并激活选定的窗口 使用...
一旦安装完成,用户可以根据自己的喜好进行配置,比如调整菜单的显示样式、排序方式,甚至添加自定义的快捷链接。这使得每个用户都能打造出一个符合自己使用习惯的个性化桌面环境。 "Right-Click-for-Apps"的源代码...
5. **文件管理器**:Fedora 16 使用Nautilus作为默认文件管理器,通过gnome-tweak-tool,我们可以调整其视图模式、排序方式以及添加额外的插件,使其更加符合Windows Explorer的使用习惯。 6. **触控板手势**:对于...
C ++ Binary Insertion Sort Bucket Sort Cycle Sort K Way Merge Sort Radix Sort Tree Sort PigeonholeSort Tree Sort C Bubble Sort Insertion Sort Merge Sort Quick Sort Selection Sort Bubble Sort #2 Gnome ...