冒泡排序和选择排序
冒泡排序:
冒泡排序可以分成两种:主动冒泡(从左到右)和被动冒泡(从右到左):
重复性的两两循环,直到一次排序结束
详情请查看代码
代码中包含了两种冒泡排序算法,分别为从左到右和从右到左的算法
/** 冒泡排序和选择排序 */ #include<stdio.h> void swap(int* a,int* b) { int c; c = *a; *a = *b; *b = c; } int main() { int nums[10] = {123,225,12,1,36,35,14,98,999,30}; int i,j; /* 从后面冒泡 (被动冒泡) */ /*for(i = 0;i<10;i++) { for(j = 9;j-i>0;j--) { if(nums[j]<nums[j-1]) { swap(&nums[j],&nums[j-1]); } } }*/ /* 从前面冒泡 */ for(i =10;i>0;i--) { for(j = 0;j<i-1;j++) { if(nums[j]>nums[j+1]) { swap(&nums[j],&nums[j+1]); } } } for(i = 0;i<10;i++) { printf("%d ",nums[i]); } printf("\n"); return 0; }
选择排序:
每次都是找出一个最小的数字进行排序
一杆到底:找出最小的数和每个数字排序
下面请查看代码:
#include<stdio.h> void swap(int* a,int* b) { int c; c = *a; *a = *b; *b = c; } int main() { int nums[10] = {123,225,12,1,36,35,14,98,999,30}; int i,j; for(i = 0;i<10;i++) { for(j = i+1;j<10;j++) { if(nums[i]>nums[j]) { swap(&nums[i],&nums[j]); } } } for(i = 0;i<10;i++) { printf("%d ",nums[i]); } printf("\n"); return 0; }
如有问题,请指出!
版权声明:本文为Rect-yy-dgs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。