查詢資料結構“快速排序” 資料結構的排序方法有哪些

發布 科技 2024-05-23
5個回答
  1. 匿名使用者2024-02-11

    這個是用 C 語言寫的。

    #include

    #include

    #define x

    #define n 100

    #define y

    int kuaipai(char *a,int i,int j,int *k) 快速排序功能

    char v;

    int i=i;

    int j=j;

    v=*(a+(i+j)/2);

    while(1)

    while(iv)

    i++;while(j>i&&*a+j)j)

    break;

    if(i= end) {

    else {

    int pivot = a[end];

    int result = getpivot(begin, end, pivot);

    quicksort(begin, result - 1);

    quicksort(result + 1, end);

    private int getpivot(int begin, int end, int pivot) {

    begin = begin - 1;

    int o = end;

    while (true) {

    while (a[++begin] while (end > 0 &&a[--end] >pivot) {

    if (begin >= end) {

    break;

    else {

    swap(begin, end);

    swap(begin, o);

    return begin;

    private void swap(int begin, int end) {

    int t = a[begin];

    a[begin] = a[end];

    a[end] = t;

    public int geta()

    return a;

    public void seta(int a) {

    a;

  2. 匿名使用者2024-02-10

    第一排是67、50、65、75、78、56、89,第二排是50、65、67、75、56、78、89,第三排是50、65、67、56、75、78、89,第四排是50、65、56、67、75、78、89,第五排是50、56、65、67、75、78、89

  3. 匿名使用者2024-02-09

    1.堆排序是指利用堆樹(Heap)的資料結構設計的一種排序演算法,是一種選擇排序。 您可以使用陣列的特徵來快速定位指定索引的元素。 堆分為大根堆和小根堆,它們是完整的二叉樹。

    2.資料結構和演算法,其實這屬於演算法的內容。 主要的內部排序方式有:氣泡排序、選擇排序、插入排序、快速排序、合併排序。

    當然,還有很多更複雜的排序方法(二叉樹排序、堆排序。 很多)主要掌握前 4 個會很好。

    3.合併排序是一種常用的排序方法,其主要思想是:依次劃分乙個無序的數字序列,直到每個序列只有乙個元素源銑,然後將兩個序列合併成乙個有序序列,依此類推。 鏟斗軌道。

  4. 匿名使用者2024-02-08

    遞迴公式。 由於設計到遞迴。 潛意識地想要使用遞迴有兩個必要條件。

    如果我們想對陣列中的一組資料進行排序,下標從 startindex 到 endindex,我們選擇 startindex 和 endindex 之間的任何資料作為樞軸。 通常,選擇陣列的最後乙個元素。

    我們從 startindex 到 endindex 遍歷資料,將較小的樞軸放在左邊,將較大的樞軸放在右邊,將樞軸放在中間。

    完成這一步後,陣列的 startindex 和 endindex 之間的資料分為三部分,都小於樞軸,中間為樞軸,秒大於樞軸。

    根據分而治之和遞迴的思想,我們可以對 startindex 和 pivot-1 之間的資料以及 pivot+1 和 endindex 之間的資料進行遞迴排序,直到區間縮小到 1,這意味著所有資料都是有序的。

    有了核心思想,現在給出了遞迴公式。 退出條件

    t(n) =2*t(n/2) +n

    推導邏輯和合併順序是一致的。 時間複雜度為:o(nlogn)

    快速排序是一種就地排序,一種以交換形式實現的運動,無需開啟額外的記憶體空間,空間複雜度為:o(1)

    合併和排序的過程是從下到上,首先處理子問題,然後合併它們。

    快速行正好相反,它的處理過程是:從上到下,先分割槽,然後處理子問題。

    合併排序不是就地排序,需要額外的記憶體空間。

    快速排序是一種就地排序。

  5. 匿名使用者2024-02-07

    快速排序是一種適用於Pascal和C++等語言的電腦科學詞彙,是對氣泡排序演算法的改進。

    1.首先,設定乙個分界值,通過分界值將陣列分為左右兩部分。

    2.將大於或等於截止值的資料集中在陣列的右側,將小於截止值的資料集中在陣列的左側。 在這種情況下,左側部分中的所有元素都小於截止值,而右側部分中的所有元素都大於或等於截止值。

    3.然後,可以對左右兩側的資料進行獨立排序。 對於左側的陣列資料,可以取乙個分界草圖賦值,將資料部分分為左右兩部分,將較小的值放在左側,較大的值放在右側。 右邊的陣列資料可以類似地處理。

    4.重複上述過程,可以看出這是乙個遞迴定義。 遞迴排序左側部分後,遞迴排序右側部分。 當對左右部分的資料進行排序時,將對整個陣列進行排序。

    排序演示

    假設初始序列為:5、3、7、6、4、1、0、2、9、10、8。

    此時ref=5,i=1,j=11,從後到前看,第乙個小於5的數字是x8=2,所以序列是:2,3,7,6,4,1,0,5,9,10,8。

    此時,i=1,j=8,從前到後,第乙個大於5的數字是x3=7,所以順序是:2、3、5、6、4、1、0、7、9、10、8。

    此時,i=3,j=8,從第8位數字往前看,小於5的第乙個數字是x7=0,因此:2,3,0,6,4,1,5,7,9,10,8。

    在這種情況下,i=3,j=7,從第3位數字向後看,第乙個大於5的數字是x4=6,因此:2,3,0,5,4,1,6,7,9,10,8。

    此時,i=4,j=7,從第7位往前看,小於5的第乙個數字是x6=1,因此:2,3,0,1,4,5,6,7,9,10,8。

    此時,i=4,j=6,從第4位向後看,直到第6位有乙個大於5的數字,這時,i=j=6,ref變成一條分界線,前面的數字比它小,後面的數字比它大,對於數字的兩部分, 您可以使用相同的方法進行排序。

相關回答
12個回答2024-05-23

資料結構是計算機儲存和組織資料的方式。 >>>More

9個回答2024-05-23

這些東西用 ASCII 程式碼表示,然後由 scan input 和 if 語句確定。

5個回答2024-05-23

我想給大家介紹一下閆偉民的教材《資料結構》(C語言版),這是目前國內口碑較好的經典教材。 >>>More

8個回答2024-05-23

建立順序表如下:

通過陣列元素 a[0..n-1] 建立順序表 l。 a 中的每個元素都按順序放置在順序表中,n 被分配給順序表的長度字段。 演算法為: >>>More

9個回答2024-05-23

1)無法接受它的描述方式。資料結構的描述多以抽象的形式出現,我們習慣於使用自然語言表示式,這使得很難接受資料結構的抽象表示式。 不止乙個學生問我,書中的“elemtype”到底是什麼型別? >>>More