c语言实现数组的排序

时间:2022-09-03 11:58:39
 

本文章只对选择排序和冒泡排序进行介绍

选择排序实际上是从0到length-1,选择某个元素与其他的元素进行大小比较,如果大于就交换,其他情况不做操作,如图:

c语言实现数组的排序

冒泡排序实际上是先选择某个元素,然后从最后一个元素依次往前比较(不超过选择的元素),如果大于就交换,否则不变,如图

c语言实现数组的排序

`从图可以看出排序出的数仿佛是从地下往上冒出一样,因此称之为冒泡排序法。选择排序和冒泡排序算数复杂度都是n*n/2,效率不是太高

头文件:

#include<stdlib.h>
#include
<stdio.h>
#include
<string.h>

函数原型:

 

void sortA1(int a[], int length);    //选择排序

void sortA2(int a[], int length); //冒泡排序

void printA1(int a[], int length); //遍历数组

实现函数:

void sortA1(int a[], int length){

int i, j, temp;

for(i = 0; i < length; ++i){

for(j = i + 1; j < length; ++j){

if(a[j] < a[i]){ //如果后一个元素小于前一个元素则交换

temp
= a[i];

a[i]
= a[j];

a[j]
= temp;

}

}
}

}

void printA1(int a[], int length){

int i;

for(i = 0; i < length; ++i){

printf(
"%d,", a[i]);
}

printf(
"\n");

}

void sortA2(int a[], int length){

int i, j, temp;

for(i = 0; i < length; ++i){

for(j = length - 1; j > i; --j){

if(a[j] > a[j - 1]){

temp
= a[j];

a[j]
= a[j - 1];

a[j
- 1] = temp;

}
}

}

}

测试:

 1 void main(){
2
3 int length = 0;
4
5 int a[] = {12, 43, 8, 50, 100, 52,0};
6
7 length = sizeof(a) / sizeof(a[0]);
8
9 printf("排序前\n");
10
11 printA1(a, length);
12
13 sortA1(a, length);
14
15 printf("选择排序后\n");
16
17 printA1(a, length);
18
19 sortA2(a, length);
20
21 printf("冒泡排序后\n");
22
23 printA1(a, length);
24
25 system("pause");
26 }

运行结果:

c语言实现数组的排序