#include<stdio.h> #define SWAP(x,y) {int t;t=x;x=y;y=t;} //选择排序法: /* 将要排序的对象最为两部分,一部分是已排序的,一部分是未排序的; 每次从未排序的部分中找出最小值,放入已排序的后面 */ int *SelectionSort(int *p,int num) { int i,j,index_min,temp; for(i=0;i<num-1;i++) { index_min = i; for(j=i+1;j<num;j++) //未排序部分中寻找最小值 { if(*(p+j)<*(p+index_min)) { index_min=j; } } if(index_min!=i) { SWAP(*(p+i),*(p+index_min)); } } return p; } //插入排序法: /*将对象分为两堆,每次取后面一堆中最靠前的元素插入到前面的合适位置*/ int *InsertionSort(int *p,int num) { int i,j,k,temp=0; for(i=1;i<num;i++) { temp = *(p+i);//依次取后面最靠前的数据 j = i-1; while(temp<*(p+j))//注意体会次循环的巧妙 { *(p+j+1) = *(p+j); j--; if(-1 == j) break; } *(p+j+1) = temp; } return p; } //冒泡排序法: /*一次循环比较相邻元素*/ int *BubbleSort(int *p,int num) { int i,j,temp; temp = p[0]; for(i=0;i<num-1;i++) { for(j=0;j<num;j++) { if(p[j]<p[j+1]) { SWAP(p[j+1],p[j]); } } } return p; } int main() { int i,num[10]={3,45,67,1,2,0,35,70,21,10},*ptr; int length =10; // ptr = SelectionSort(num,length); // ptr = InsertionSort(num,length); ptr = BubbleSort(num,length); for(i=0;i<length;i++) { printf("%d ",*(ptr+i)); } return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:1416 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:461 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:740 |
【排队买票】 (C语言代码)浏览:889 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:5174 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:657 |
用筛法求之N内的素数。 (C语言代码)浏览:798 |
用筛法求之N内的素数。 (C++代码)浏览:691 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:517 |
罗列完美数 (C语言代码)浏览:477 |