
(一)冒泡排序
冒泡排序在一组需要排序的数组中,对两两数据顺序与要求顺序相反时,交换数据,使大的数据往后移,每趟排序将最大的数放在最后的位置上,如下:

代码实现:
void bubbleSort(int arr, int n) {
for (int i=0;i<n-1;i++)
for (int j=0;j<n-i-1;j++)
{
//如果前面的数比后面大,进行交换
if(arr[j]>arr[j+1]){
int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;
}
}
}
int main()
{
int arr[]={3,6,4,2,11,10,5};
bubbleSort(arr,7);
for (int j=0;j<7;j++)
printf("%d",arr[j]);
(二)选择排序
选出最小的数和第一个数交换,再在剩余的数中又选择最小的和第二个数交换,依次类推,如图所示:

代码实现:
void selectSort(int arr[],int n)
{
int i,j,minValue, tmp;
for(i = 0; i < n-1; i++)
{
minValue = i;
for(j = i + 1; j < n; j++)
{
if(arr[minValue] > arr[j])
{
minValue = j;
}
}
if(minValue != i)
{
tmp = arr[i];
arr[i] = arr[minValue];
arr[minValue] = tmp;
}
}
}
void printArray(int arr[], int n)
{
int i;
for(i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
void main()
{
int arr[6]={7,4,-2,19,13,6};
printArray(arr, 6);
selectSort(arr, 6);
printArray(arr, 6);
return;
}
(三)插入排序
插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。

代码实现:
void insertSort(int arr[],int n)
{
int i,j,tmp;
for(i=1;i<n;i++)
{
for(j=i;j>0;j--)
{
if(arr[j]<arr[j-1])
{
tmp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=tmp;
}
else
{
break;
}
}
}
}
void printArray(int arr[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d",arr[i]);
}
printf("\n");
}
int main()
{
int arr[10]={49,38,65,97,76,13,27,49};
printArray(arr,8);
insertSort(arr,8);
printArray(arr,8);
}
二、练习
【例1】
编程从键盘给一个长度为10的整型数组输入十个整数,并将其下标为奇数的元素从小到大排序。
【答案与解析】
#include<stdio.h>
void bubbleSort(int arr[], int n) {
for (int i=1;i<n-1;i=i+2)
for (int j=1;j<n-i-1;j=j+2)
{
if(arr[j]>arr[j+2]){
int temp=arr[j];arr[j]=arr[j+2];arr[j+2]=temp;
}
}
}
int main()
{
int arr[10];
for (int j=0;j<10;j++)
scanf("%d",arr+j);
bubbleSort(arr,10);
for (int j=1;j<10;j+=2)
printf("%d\n",arr[j]);考研实用工具推荐
1、2022考研院校专业匹配查询系统
2、近4年全国各在招院校专业复试分数线查询
3、历年调剂信息查询
4、历年各院校专业目录查询
5、历年各院校报录比查询
6、历年各院校参考书目录查询
免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用,不涉及商业盈利目的。如涉及版权问题,请联系本站管理员予以更改或删除。





