排序算法汇集

1、冒泡排序

冒泡排序是一种算法比较简单的排序,它的主要思想是:第一遍循环时,第一个元素和第二个元素比较,较小的放在前面,较大的数放在后面;第二个元素和第三个元素比较,较小的放在前面,较大的放在后面;直至倒数第二个元素和倒数第一个元素比较,这样最大的那个元素就会在最后的位置;同理,再进行第二次循环,倒数第二个元素的位置会存放第二大数。

C语言的算法实现如下:

void bubblesort( int a[], int n ) {
int i, j;
int temp, flag;
for( i = 0; i < n - 1; i++ ) {
flag = 1;
for( j = 0; j < n - i - 1; j++ ) {
if( a[j] > a[j+1] ) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
flag = 0;
}
}
if( 1 == flag ) {
printf( "sorted end: %d\n", i ); //打印第几遍循环时,数组已有序
break;
}
}
return;
}

2、插入排序

插入排序是一种稳定的排序方法。由n-1趟排序组成,对于第p趟排序,保证从0到p的位置上得元素是有序的。

C代码实现如下:

  void insertsort( int a[], int n ) {
int i, j;
int temp;
for( i = 1; i < n; i++ ) {
temp = a[i];
j = i;
while( j > 0 && a[j] < a[j-1] ) {
a[j] = a[j-1];
j--;
}
a[j] = temp;
}
}




原文地址:https://www.cnblogs.com/qi09/p/2215055.html