目錄:
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 ...