C语言排序
来源:互联网 发布:远程端口修改 编辑:程序博客网 时间:2024/06/06 15:42
1.一般排序
#include <stdio.h>int main(){int num = 0;int array[10] = {15,8,2,16,9,54,52,11,25,3};int i,j,temp; for (i = 0; i < 10; i++) { for(j = 9; j >= i;j--) if(array[j]<array[i]) { temp = array[j]; array[j] = array[i]; array[i] = temp; num++; } } for (i = 0;i <9 ;i++) printf("%d,",array[i]); printf("\n"); printf("num:%d\n",num);}
或者
#include <stdio.h>int main(){int num = 0;int array[10] = {15,8,2,16,9,54,52,11,25,3};int i,j,temp;for (i = 0; i < 10; i++){for(j = i+1; j <10i;j++)if(array[j]<array[i]){temp = array[j];array[j] = array[i];array[i] = temp;num++;}}for (i = 0;i <9 ;i++)printf("%d,",array[i]);printf("\n");printf("num:%d\n",num);}
2.改进的冒泡排序
<pre name="code" class="cpp">#include <stdio.h>#define false 0#define true 1int main(){ int num = 0; int array[10] = {13,2,5,18,7,12,9,10,15,6}; int i,j,temp; int flag = false; for (i = 0; i < 10; i++) { flag = false; for(j = 9; j >= i;j--) if(array[j]<array[i]) { temp = array[j]; array[j] = array[i]; array[i] = temp; num++; flag = true; } if(flag) break; } for (i = 0;i <9 ;i++) printf("%d,",array[i]); printf("\n"); printf("num:%d\n",num);}
3.直接插入排序
#include <stdio.h>int main(void){ int num = 0; int array[10] = {15,8,2,16,9,54,52,11,25,3}; int i,j,temp; for (i = 1;i <= 9;i++) { if(array[i-1]>array[i]) { temp = array[i]; j = i; while(j>0&&array[j-1]>temp) { array[j] = array[j-1]; j--; } array[j] = temp; num++; } } for (i = 0;i <= 9;i++) printf("array: %d\n",array[i]); printf("num=%d\n",num); printf("\n");}
4.快速排序
#include <stdio.h>static int num = 0;void QuickSort(int array[], int low, int high);int FindPos(int array[], int low, int high);int main(){ int i; int array[10] = {13,2,5,18,7,12,9,10,15,6}; QuickSort(array,0,9); for (i = 0;i <9 ;i++) printf("%d,",array[i]); printf("\n"); printf("num:%d\n",num);}void QuickSort(int array[], int low, int high){ int pos; if(low<high) { pos = FindPos(array,low,high); QuickSort(array,low,pos-1); QuickSort(array,pos+1,high); }}int FindPos(int array[], int low, int high){ int temp = array[low]; while(low<high) { while(low<high&&temp<array[high]) high--; array[low]=array[high]; num++; while(low<high&&array[low]<temp) low++; array[high]=array[low]; num++; } array[low]=temp; return low;}
5.选择排序
#include <stdio.h>static int num = 0;int main(){ int i,j,temp,b; int array[10] = {13,2,5,18,7,12,9,10,15,6}; for(i=0;i<10;i++) { temp = i; for(j=i+1;j<10;j++) { if(array[temp]>array[j]) { temp = j; } } if(temp!=i) { b = array[temp]; array[temp] = array[i]; array[i] = b; num++; } } for (i = 0;i <9 ;i++) printf("%d,",array[i]); printf("\n"); printf("num:%d\n",num);}
0 0
- C语言排序:冒泡排序
- c语言排序,冒泡排序
- 快速排序--C语言
- C 语言排序算法
- 堆排序----C语言
- stooge排序---C语言
- C语言的排序
- C语言排序算法
- C语言排序算法
- 排序算法(c语言)
- 插入排序C语言
- 希尔排序C语言
- 堆排序C语言
- 快速排序C语言
- 拓扑排序C语言
- C语言排序
- 计数排序C语言
- C语言选择排序
- 如何启用Open vSwitch的日志功能以便调试和排障
- appqs意外退出问题的解决办法
- 长按UITableViewCell弹出UIMenuController
- 大四上week2-1,2-2
- Oracle VM Architecture
- C语言排序
- find duplicates in matrix within k indices
- 查找并杀死占用某端口的进程
- Fragment 详解与使用
- 神经网络FAQ简介
- 回车换行区别
- MYSQL 主从服务器配置
- Java 理论与实践: 用弱引用堵住内存泄漏
- android坐标