一个快速排序 和 直接插入排序 的简单 c程序
2012-11-11 20:47
267 查看
快速排序:
#include <stdio.h> void QuickSort(int arr[],int low,int high); int main(int argc, char *argv[]) { int i,arr[10]={5,8,4,3,7,0,9,1,2,6}; for(i=0;i<10;i++) printf("%d ",arr[i]); QuickSort(arr,0,9); printf("\n"); for(i=0;i<10;i++) printf("%d ",arr[i]); return 0; } void QuickSort(int arr[],int low,int high) { int i=1,j=1,key=1; if(low < high) { key = arr[low];i=low;j=high; while(i < j) { while(i<j && arr[j]>key) j--; if(i<j) arr[i++] = arr[j]; while(i < j && arr[i]<key) i++; if(i < j) arr[j--] = arr[i]; } arr[i] = key;//此时i==j QuickSort(arr,low,i-1); QuickSort(arr,i+1,high); } }
直接插入排序:
#include <stdio.h> void InsertSort(int arr[],int i,int j); int main(int argc, char *argv[]) { int i,arr[10]={4,5,8,9,6,0,1,7,3,2}; for(i=0;i<sizeof(arr)/sizeof(int);i++) printf("%d ",arr[i]); InsertSort(arr,2,7); printf("\n"); for(i=0;i<sizeof(arr)/sizeof(int);i++) printf("%d ",arr[i]); return 0; } void InsertSort(int arr[],int i,int j)//待排序的数组名arr待排的下界i和上届j。 { int k,temp,b=i;//k用来做扦插过程中的循环变量从而保护变量i,b用来存储待排序的下界。 for(i=i+1;i<=j;i++) { k=i; while(k>b && arr[k]<arr[k-1]) { temp=arr[k]; arr[k] = arr[k-1]; arr[k-1]=temp; k--; } } }
相关文章推荐
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- 七种排序(直接插入、折半插入、希尔、起泡、快速、简单选择、堆排序)
- 六、内部排序综合(九种)—插入类排序(直接插入、折半插入、希尔排序);交换类排序(冒泡、快速);选择类排序(简单选择、堆排序);二路归并排序;基数排序
- 每天一个小程序(10)——直接插入排序
- 快速简单理解——直接插入排序
- 七种排序(直接插入、折半插入、希尔、起泡、快速、简单选择、堆排序)
- 直接插入排序 一个简单示例
- java几种排序简单实现(快速排序,冒泡排序,直接插入排序)
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- 常用的排序算法:冒泡,简单选择,直接插入,快速排序,堆排序
- 简单排序算法之简单选择排序和直接插入排序
- 从零开始_学_数据结构(六)——排序(冒泡、插入、希尔、简单选择、归并、快速)
- 一个简单的数组排序程序
- C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- C语言 - ACM题目:第一行输入n m,第二行输入一个数列,n为数列长度,m为要插入的值,排序后输出,m n为零时退出程序
- 实现一个简单的菜单程序,运行时显示"Menu:A(dd) D(elete) S(ort) Q(uit),Select one: "提示用户输入。输入A、D、S时分别提示"数据已经增加、删除、排序"
- 排序算法(快速排序、直接插入排序、直接选择、冒泡排序)
- c++实现数据结构中的各种排序方法:直接插入、选择,归并、冒泡、快速、堆排序、shell排序