地精排序Gnome Sort ----(排序演算法十)
1.演算法原理
2.演算法程式碼
#include <stdio.h> //printArray打印出陣列 void printArray(int a[],int size){ printf("陣列為:[%d] ",a[0]); for (int i=1;i<size;i++) { printf(" %x ",a[i]); } printf("\n"); } void main() { //a[0]監視哨 int a[10] ={0,9,8,7,6,5,4,3,2,1}; int len=10; int i = 1; while (i < len) { if (i == 1 || a[i-1] <= a[i]){ i++; }else{ printf("%d<-->%d ",a[i-1],a[i]); printArray(a,10); a[0] = a[i]; a[i] = a[i-1]; a[--i] = a[0]; } } printArray(a,10); }
3.結果
9<-->8 陣列為:[0] 9 8 7 6 5 4 3 2 1 9<-->7 陣列為:[8] 8 9 7 6 5 4 3 2 1 8<-->7 陣列為:[7] 8 7 9 6 5 4 3 2 1 9<-->6 陣列為:[7] 7 8 9 6 5 4 3 2 1 8<-->6 陣列為:[6] 7 8 6 9 5 4 3 2 1 7<-->6 陣列為:[6] 7 6 8 9 5 4 3 2 1 9<-->5 陣列為:[6] 6 7 8 9 5 4 3 2 1 8<-->5 陣列為:[5] 6 7 8 5 9 4 3 2 1 7<-->5 陣列為:[5] 6 7 5 8 9 4 3 2 1 6<-->5 陣列為:[5] 6 5 7 8 9 4 3 2 1 9<-->4 陣列為:[5] 5 6 7 8 9 4 3 2 1 8<-->4 陣列為:[4] 5 6 7 8 4 9 3 2 1 7<-->4 陣列為:[4] 5 6 7 4 8 9 3 2 1 6<-->4 陣列為:[4] 5 6 4 7 8 9 3 2 1 5<-->4 陣列為:[4] 5 4 6 7 8 9 3 2 1 9<-->3 陣列為:[4] 4 5 6 7 8 9 3 2 1 8<-->3 陣列為:[3] 4 5 6 7 8 3 9 2 1 7<-->3 陣列為:[3] 4 5 6 7 3 8 9 2 1 6<-->3 陣列為:[3] 4 5 6 3 7 8 9 2 1 5<-->3 陣列為:[3] 4 5 3 6 7 8 9 2 1 4<-->3 陣列為:[3] 4 3 5 6 7 8 9 2 1 9<-->2 陣列為:[3] 3 4 5 6 7 8 9 2 1 8<-->2 陣列為:[2] 3 4 5 6 7 8 2 9 1 7<-->2 陣列為:[2] 3 4 5 6 7 2 8 9 1 6<-->2 陣列為:[2] 3 4 5 6 2 7 8 9 1 5<-->2 陣列為:[2] 3 4 5 2 6 7 8 9 1 4<-->2 陣列為:[2] 3 4 2 5 6 7 8 9 1 3<-->2 陣列為:[2] 3 2 4 5 6 7 8 9 1 9<-->1 陣列為:[2] 2 3 4 5 6 7 8 9 1 8<-->1 陣列為:[1] 2 3 4 5 6 7 8 1 9 7<-->1 陣列為:[1] 2 3 4 5 6 7 1 8 9 6<-->1 陣列為:[1] 2 3 4 5 6 1 7 8 9 5<-->1 陣列為:[1] 2 3 4 5 1 6 7 8 9 4<-->1 陣列為:[1] 2 3 4 1 5 6 7 8 9 3<-->1 陣列為:[1] 2 3 1 4 5 6 7 8 9 2<-->1 陣列為:[1] 2 1 3 4 5 6 7 8 9 陣列為:[1] 1 2 3 4 5 6 7 8 9
相關推薦
地精排序Gnome Sort ----(排序演算法十)
1.演算法原理 2.演算法程式碼 #include <stdio.h> //printArray打印出陣列 void printArray(int a[],int size){
拓撲排序|Topological Sort類演算法題心得(PYTHON版)
拓撲排序 尋找專案之間依賴順序的過程稱為拓撲排序(topological sorting)。 首先要了解有向無環圖|Directed Acyclic Graph: 用字典表示:G = { 'a':'bce', 'b':'d','c':'d','d':'','e':'cd'} Key
雞尾酒排序Cocktail Sort(排序演算法九)
1.演算法原理 2.程式碼實現 #include <stdio.h> //printArray打印出陣列 void printArray(int a[],int size){
鴿巢排序Pigeonhole Sort----(排序演算法八)
1.演算法原理 鴿巢排序是對桶排序演算法的改進,只是桶中裝對應下標放元素出現的次數 待排序陣列:a[14] ={ 6, 6, 2, 2, 2, 4, 1, 1, 1, 5, 5, 5, 5, 9 };
EXCEL排序 (sort排序)
Excel可以對一組紀錄按任意指定列排序。現請你編寫程式實現類似功能。 Input測試輸入包含若干測試用例。每個測試用例的第1行包含兩個整數 N (<=100000) 和 C,其中 N 是紀錄的條數,C 是指定排序的列號。以下有 N 行,每行包含一條學生紀錄
記錄一下氣泡排序和sort()排序
今天有空,整理了一下寫過的javascript排序方法。排序方法很多,我瞭解的不算多,這裡記錄下知道的氣泡排序和js自帶的sort()排序。 1. 氣泡排序 function BubbleSort(arr) { var len = arr.length;
java實現地精排序演算法
前面我們詳細的講解了地精排序演算法,現在我們用java程式碼來實現一下,直接上程式碼 package ttt; public class GnomeSort { public static int[] BubbleSort(int[] theArray) {
go實現地精排序演算法
前面我們詳細的講解了地精排序演算法,現在我們用go語言來實現下 package main import "fmt" //地精排序 func gnomeSort(theArray []int) []int { i := 0 for i<len(theArray)
臭皮匠排序(Stooge Sort)----(排序演算法十二)
1.演算法原理 2.程式碼實現 #include <stdio.h> //printArray打印出陣列 void printArray(int a[],int size){
[golang] 數據結構-地精排序
ffffff 最好 排序。 () col images import else 圖片 碎碎念這是一個名字起得很隨便的排序算法,是我我就叫他史萊姆排序ㄟ(▔,▔)ㄏ 原理地精排序是也是一種交換排序。它只進行一輪比較,在這輪比較中,遇到比較前面元素大就向後移動一位繼續比較,遇到
排序演算法--氣泡排序(bubble sort)
氣泡排序是一個簡單的排序演算法,演算法複雜度n的平方,特點是兩兩比較,每次遍歷會將最大值或最小值放在最後,像冒泡一樣,每次的最大值或最小值,逐漸冒出,故名氣泡排序; 程式碼如下 void swap( int& a,int& b) {//資料交換的函式,這裡另類了一點,沒有
經典排序演算法 - 氣泡排序Bubble Sort
最近學習了一下排序演算法,寫篇文章記錄一下,詳細講解網上有很多,可以自己去查 氣泡排序Bubble Sort 氣泡排序是通過兩兩比較,最大的往後移,重複這一過程直到資料不再交換,則排序完成。氣泡排序的時間複雜度是O(n²),是穩定排序。 演算法描述(Java):
經典排序演算法 - 插入排序Insert Sort
最近學習了一下排序演算法,寫篇文章記錄一下,詳細講解網上有很多,可以自己去查 插入排序Insert Sort 直接插入排序就是依次將無序表中的資料插入到有序表的適當位置,使有序表仍有序,直到全部插入為止。插入排序的時間複雜度是O(n²),是穩定排序。 [ 2
【排序演算法】選擇排序(Selection sort)
0. 說明 選擇排序(Selection sort)是一種簡單直觀的排序演算法。 它的工作原理如下。 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完
Java基礎 String 裸暴力演算法- 五個小練習 Java陣列直接選擇排序、sort()排序
之間的部落格,承上啟下: Java基礎 String/StringBuff 常用操作方法複習/記憶體分析 Java陣列直接選擇排序、sort()排序 Java基礎 String 演算法 - 五個練習題目要求: /** 1.模擬一個trim方法,去除
《演算法》第四版algs4:sort排序演算法C++實現
具體程式碼: https://github.com/Nwpuer/algs4-in-cpp/blob/master/sort.h 這一章的實現,相比於書上我做了輕微的改變,主要目的是把程式碼寫的更加簡潔易懂,更加關注演算法是如何實現的,換言之,更關注演算法的本質,而不是如何去設計一個C+
經典排序演算法 - 堆排序Heap sort
經典排序演算法 - 堆排序Heap sort 堆排序有點小複雜,分成三塊 第一塊,什麼是堆,什麼是最大堆 第二塊,怎麼將堆調整為最大堆,這部分是重點 第三塊,堆排序介紹 第一塊,什麼是堆,什麼是最大堆 什麼是堆 這裡的堆(二叉堆),指得不是堆疊的那
十大排序演算法(氣泡排序,快速排序,插入排序等)
氣泡排序 <1>.比較相鄰的元素。如果第一個比第二個大,就交換它們兩個; <2>.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數; <3>.針對所有的元素重複以上的步驟,除了最後一個; <4>.
STL sort排序演算法詳細介紹
C++之所以得到這麼多人的喜歡,是因為它既具有面向物件的概念,又保持了C語言高效的特點。STL 排序演算法同樣需要保持高效。因此,對於不同的需求,STL提供的不同的函式,不同的函式,實現的演算法又不盡相同。1.1 所有sort演算法介紹所有的sort演算法的引數都需要輸入一個範
常用演算法——希爾排序(Shell Sort)
1.什麼是希爾排序 希爾排序的核心思想是使陣列中任意間隔為g的元素都是有序的。首先取小於陣列長度的一個數g1作為第一個間隔值,對全部陣列進行兩兩分組,在分組內實現排序。然後取g2(g2小於g1,g1到g2應有一個明確的增量演算法)再對陣列進行兩兩分組,再實現組