資料結構之排序

2021-08-21 09:25:12 字數 2842 閱讀 4212

目錄:

1.氣泡排序

2.快速排序

3.直接插入排序

4.希爾(shell)排序

5.直接選擇排序

6.堆(heap)排序

7.歸併排序

1.氣泡排序

#include//氣泡排序演算法

void bubblesort(int *arr, int n)

}}int main() ;

int n = sizeof(arr) / sizeof(int);

bubblesort(arr, n);

printf("排序後的陣列為:\n");

for (int j = 0; j2.快速排序

#includevoid swap(int *x, int *y)

//分治法把陣列分成兩份

int patition(int *a, int left,int right)

//把基準元素放到中間

swap(&a[right], &a[++i]);

//返回陣列中間位置

return i;

}//快速排序

void quicksort(int *a,int left,int right)

int main() ;

int n = sizeof(a) / sizeof(int);

quicksort(a, 0,n-1);

printf("排序好的陣列為:");

for (int l = 0; l < n; l++)

printf("\n");

return 0;

}

3.直接插入排序

#includevoid insertsort(int  *a, int n) 

a[j] = tmp;}}

}int main() ;

int n = sizeof(a)/sizeof(int);

insertsort(a, n);

printf("排序好的陣列為:");

for (int i = 0; i < n; i++)

printf("\n");

return 0;

}

#include//    進行插入排序

// 初始時從dk開始增長,每次比較步長為dk

void insrtsort(int *a, int n,int dk)

a[j+dk] = tmp; // 插入tmp}}

}void shellsort(int *a, int n)

}int main() ;

int n = sizeof(a) / sizeof(int);

shellsort(a, n);

printf("排序好的陣列為:");

for (int j = 0; j < n; j++)

return 0;

}

#include//    進行插入排序

// 初始時從dk開始增長,每次比較步長為dk

void insrtsort(int *a, int n,int dk)

a[j+dk] = tmp; // 插入tmp}}

}void shellsort(int *a, int n)

}int main() ;

int n = sizeof(a) / sizeof(int);

shellsort(a, n);

printf("排序好的陣列為:");

for (int j = 0; j < n; j++)

return 0;

}

#includevoid selectsort(int *a, int n) 

}if (key != i)

}}int main() ;

int n = sizeof(a) / sizeof(int);

selectsort(a, n);

printf("排序好的陣列為: ");

for (int k = 0; k < n; k++)

printf("%d ", a[k]);

printf("\n");

return 0;

}

7.歸併排序

#include #include // 合併兩個已排好序的陣列

void merge(int a, int left, int mid, int right)

while (i <= mid)

while (j <= right)

for (int k = 0; k < len; k++)

}// 遞迴實現的歸併排序

void mergesort(int a, int left, int right)

int main() ;

int n = sizeof(a) / sizeof(int);

mergesort(a, 0, n - 1);

printf("排序好的陣列為:");

for (int k = 0; k < n; ++k)

printf("%d ", a[k]);

printf("\n");

return 0;

}

資料結構之排序

在待排序的檔案中,若存在多個關鍵字相同的記錄,經過排序後這些具有相同關鍵字的記錄之間的相對次序保持不變,該排序方法是穩定的 若具有相同關鍵字的記錄之間的相對次序發生變化,則稱這種排序方法是不穩定的。穩定的排序 時間複雜度 空間複雜度 氣泡排序 最差和平均是o n2 最好是o n 1 雙向氣泡排序 最...

資料結構之排序

package com.small 注意a 0 是否有意思,書上c語言基本都是將a 0 作為哨兵,那麼0號元素不能用,我這裡全部是flag代替 author small leaf public class sort else for j i 1 j high 1 j a high 1 flag 希爾...

資料結構之排序

常用的幾種排序方法 冒泡 插入 選擇 快排 歸併排序 1 冒泡 以公升序為例,也是有兩種思路,1 num 0 依次與後面比較將最小的放到第一位 2 將最大的放到最後一位。我比較習慣用第一種 1 include include using namespace std int main for int ...