本文主要是介绍C语言选择排序与冒泡排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
想学习更多的排序算法,请访问todayx的博客
选择排序
介绍:
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。
排序效果:
代码:
/*
selection sort
*/#include<stdio.h>int main(void)
{int a[] = {17, 61, 58, 31, 15, 35, 49, 75, 40, 96, 13, 73, 95, 94, 45, 23, 5, 72, 85, 7, 68, 24, 30, 10, 14, 89, 79, 71, 80, 57};int i,j,k;int count = 1;int tmp = 0;int size = sizeof(a) / sizeof(a[0]);printf("size=%d\n",size);for( j = 0; j < size; j++){for( k = j+1; k < size; k++){if( a[j] > a[k] ){tmp = a[j];a[j] = a[k];a[k] = tmp;}}}for( i = 0; i < size; i++){if( a[i] < 10 )printf(" ");printf("%d ",a[i]);if( count % 10 == 0 )printf("\n");count++;}return 0;
}
冒泡排序
介绍:
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
步骤:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
排序效果:
代码:
/*
bubble sort
*/
#include<stdio.h>int main(void)
{int a[] = {17, 61, 58, 31, 15, 35, 49, 75, 40, 96, 13, 73, 95, 94, 45, 23, 5, 72, 85, 7, 68, 24, 30, 10, 14, 89, 79, 71, 80, 57};int i, j, k, size, tmp;size = sizeof(a)/sizeof(a[0]);k = 1;for( j = 0; j < size -1; j++){for( i = 0; i < size; i++){if ( a[i] > a[i+1]){tmp = a[i];a[i] = a[i+1];a[i+1] = tmp;}}}for( i = 0; i < size; i++){printf("%d ", a[i]);if(a[i] < 10)printf(" ");if ( k % 10 == 0)printf("\n");k++;}return 0;
}
这篇关于C语言选择排序与冒泡排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!