1、摘要
歷次找工作,經常會被要求寫排序演算法,每次都寫氣泡排序,而且每次都很心虛。不是因為怕寫的不對,而是因為自己的資料結構、演算法基本功不紮實。越來越覺得這些重要,不僅僅是理解原理那麼簡單,而是覺得應該自己能夠隨手實現它們,最少能夠實現乙個大概。
本文實現幾種內排序。接下來會依次實現其他一些演算法。
2、排序演算法實現
這個頁面介紹了排序是什麼,以及簡單提到了內排序和外排序的區別。而
這篇文章則詳細介紹了幾種排序的思想,並給出了pascal語言的實現。
常見內排序包括插入排序、氣泡排序、快速排序、直接選擇排序、堆排序、希爾排序和歸併排序等。其中
快速排序則為這些排序中的大牌明星,其平均效率遠低於其他排序方法。
下面列出幾個排序演算法的c語言實現,以便日後查閱。
l氣泡排序
void bubblesort(int ori, int len)
}
}
}
l插入排序
void insertsort(int ori, int len)
ori[j] = tmp;
}
}
l直接選擇排序
void selectsort(int ori, int len)
}
}
}
l快速排序
快速排序稍微複雜一點,用到兩個函式,其中getpivot函式的功能是獲取支點元素,該元素從陣列首尾以及中間位置的數中獲取,獲取規則是將這三個數排序,取中間值。需要注意的是這三個數被排序以後,最大的放在陣列最後,最小的放在陣列最前,而中間那個數則和倒數第二個數交換位置。
void quicksort(int data, int start, int end)
else
break;
}
swap(&data[i], &data[end - 1]);
quicksort(data, start, i - 1);
quicksort(data, i + 1, end);
}
else
}
static int getpivot(int data, int start, int end)
以上函式用到swap函式,用於交換兩個數的值。
static void swap(int *a, int *b)
3、作者手記
青娛樂開發工程師。
4、更新日誌
5、參考文件
6、相關文件
排序演算法(C語言實現)
本文共介紹了7種排序演算法 參考文章 1.1 基本思想 依次向後兩兩相鄰比較,大的向後移 1.2 示例 void bubblesort int a,int n 2.1 基本思想 從無序佇列中選擇最小值,放置到有序佇列的末尾 2.2 示例 void selectsort int a,int n a j...
排序演算法 氣泡排序 C語言實現
氣泡排序介紹 氣泡排序 bubble sort 又稱為氣泡排序。這是一種較簡單的排序演算法。它會遍歷若干次要排序的陣列,每次遍歷時,它都會從前往後依次比較相鄰兩個數的大小 如果前者大於後者,則兩者位置互換。由此,一次遍歷後,最大元素就在數列末尾。採用相同方法再次遍歷時,第二大的元素就被排列在最大元素...
排序演算法的C語言實現 希爾排序
希爾排序和氣泡排序有點相似,但是不同的是希爾排序使用乙個序列h1,h2.hi,叫做增量序列。在使用增量hk排序後,所有相隔hk的元素都被排序。希爾排序衝破二次時間屏障的第一批演算法之一。它有乙個重要性質 hk 排序的檔案 此後將是 hk 1 排序 將保持它的 hk排序性,這樣各趟排序結果就不會打亂前...