冒泡排序 Bubble Sort 和 选择排序 Selection Sort
2014-04-11 00:00
274 查看
摘要: C实现冒泡排序 Bubble Sort 和 选择排序 Selection Sort
两种比较简单的排序算法,当然复杂度都是n suqaired。
具体实现如下:
两种比较简单的排序算法,当然复杂度都是n suqaired。
具体实现如下:
void *bubbleSort(void *base, size_t nmeb, size_t size, int(*compar)(const void *, const void *)) { int i, j, swapped; for (i = 0; i < nmeb - 1 && swapped; i++) { swapped = 0; for (j = 0; j < nmeb - 1; j++) { if (compar(base + j, base + j + 1) > 0) { swap(base + j, base + j + 1, size); swapped = 1; } } } } void selectionSort(void *base, size_t nmeb, size_t size, int(*compar)(const void *, const void *)) { int i, j, min; for (i = 0; i < nmeb; i++) { min = i; for (j = i + 1; j < nmeb; j++) { if (compar(base + i * size, base + j * size) < 0) { min = j; } } if (i != min) swap(base + i * size, base + min * size, size); } }
void swap(void *p1, void *p2, size_t size) { void *temp; temp = malloc(size); if (temp == NULL) { exit(EXIT_FAILURE); } memcpy(temp, p1, size); memcpy(p1, p2, size); memcpy(p2, temp, size); free(temp); } int comparStr(const void *p1, const void *p2) { return strcmp(* (char * const *) p1, * (char * const *) p2); } int comparInt(const void *p1, const void *p2) { return (*(const int *) p1 - *(const int *) p2); }
相关文章推荐
- 算法:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)和选择排序(Selection Sort)总结
- 冒泡排序(bubble sort)(另一种选择排序)
- C/C++ 排序之一(冒泡排序、选择排序、交换排序)
- Java 数据结构----冒泡排序 选择排序
- java中选择排序和冒泡排序
- Java排序算法(冒泡排序、选择排序、插入排序、反数组排序、快速排序)例子
- 8 排序--选择排序,插入排序,冒泡排序,shell排序,快速排序(递归,迭代,改进版本),归并排序
- 第二章 简单排序算法--插入排序,冒泡排序,选择排序
- 冒泡排序、插入排序和选择排序
- 冒泡排序,快速排序,归并排序,选择排序,插入排序,堆排序
- Java实现冒泡排序和快速排序,选择…
- C#算法 选择排序、冒泡排序、插入排序
- 冒泡排序、选择排序、插入排序的比较
- 算法不会,尚能饭否之排序——冒泡排序(bubble sort)
- 冒泡排序 选择排序
- 冒泡排序、选择排序、堆排序、快速排序、插入排序算法复杂度分析与算法实现(自己总结与转)
- 简单排序之冒泡排序,选择排序,插入排序
- 冒泡排序、直接选择排序、二分法查找
- 排序算法之冒泡排序、选择排序
- 用C语言编写一个程序,对整型数组排序(冒泡排序,选择排序)