冒泡排序和选择排序
冒泡排序:
冒泡排序可以分成两种:主动冒泡(从左到右)和被动冒泡(从右到左):
重复性的两两循环,直到一次排序结束
详情请查看代码
代码中包含了两种冒泡排序算法,分别为从左到右和从右到左的算法
- /**
- 冒泡排序和选择排序
- */
- #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 版权协议,转载请附上原文出处链接和本声明。