计数排序:不用交换,按数组下标排,只能排整数
#include #include int a[1000]={-1};//a数组存放正数 int b[1000]={-1};//b数组存放负数 int main() { //让数组下标和数组存放的值一一对应,遍历数组就可以做到排序 int i; while(scanf("%d",&i)!=EOF){ if(i>=0) a[i]=i;//如果输入大于等于0,存放到a数组 else b[abs(i)]=i;//如果输入小于0,存放到b数组 } for(int j=1000;j>0;j--){//遍历数组,负数升序输出 if(abs(b[j])==j){ printf("%d ",b[j]); } } for(int j=0;j<1000;j++){//遍历数组,正数升序输出 if(a[j]==j){ printf("%d ",a[j]); } } return 0; }
选择排序:每次把当前最小值换到前面,大交换
#include int main() { int a[10],i,j,m,t; for(i=0;i<10;i++){ scanf("%d",&a[i]); //输入10个数,无序区 } for(i=0;i<10;i++){//无序区 m=i; //假设最小值m是无序区第一个数 for(j=i+1;ja[j]){ m=j; } } if(m!=i){//如果最小值不是无序区第一个数,就把最小值和无序区第一个数交换 t=a[m]; a[m]=a[i]; a[i]=t; } //每次前面数和最小值互换,把当前最小值换到前面 } for(i=0;i<10;i++){ printf("%d ",a[i]); } return 0; }
冒泡排序:相邻比较交换,小交换
#include int main() { int a[10],i,j,t; for(i=0;i<10;i++){ scanf("%d",&a[i]); } for(i=1;i<10;i++){ for(j=0;ja[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } for(i=0;i<10;i++){ printf("%d ",a[i]); } return 0; }
0.0分
7 人评分
九宫重排 (C++代码)浏览:1410 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:592 |
核桃的数量 (C语言代码)浏览:726 |
sizeof的大作用 (C语言代码)浏览:1138 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:650 |
Quadratic Equation (C语言代码)浏览:1034 |
数组输出 (C语言代码)浏览:749 |
简单的a+b (C语言代码)浏览:491 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:595 |
母牛的故事 (C语言代码)浏览:519 |