数组与冒泡排序选择排序

1. 前言

哈哈,最常用的数据结构应该是数组吧,有人说是单一变量,单一变量那也不叫结构啊。

所以一般数据结构的第一课是数组,跟数组这种数据结构相关的操作,最常见的就是排序啦。

排序里面最简单也是最常用的,应该就是冒泡排序和选择排序了。

2. 冒泡排序说明

冒泡的意思就是从水底往上面冒泡(我们把数组第一个元素看做水底),对于数组来说,是通过比较和换位,每次把最大(最小)的一个元素移动到顶上来,然后剩下的再次冒泡排序。

3. 冒泡排序代码

#include<stdio.h>

//冒泡排序 此处演示从小到大排序
void bubbleSort(int arr[], int length)
{
	int i,j,temp;
	for (i = 0; i < length-1; i++) //一共有n-1轮
	{
		for (j = 0; j < length - 1-i; j++) {//每轮把最大的1个放到了最后面
			if (arr[j] > arr[j + 1]) //交换
			{
			    temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}

int main() 
{
	//待排序数组
	int length = 10;
	int arr[10] = {1,3,5,7,2,4,6,8,10,9};
	int i;
	printf("\n排序前:");
	for (i = 0; i < length; i++)
	{
		printf("%d ",arr[i]);
	}
	//排序
	bubbleSort(arr, length);
	printf("\n排序后:");
	for (i = 0; i < length; i++)
	{
		printf("%d ", arr[i]);
	}
	return 1;
}

4. 选择排序说明

相对于冒泡排序,选择排序更加好理解,所以我平时写排序最多的,就是选择排序了。

扫描数组,把最大(最小)的放到第一个位置,然后剩下再扫描,把最大(最小)放第二个位置,最后就排序完了。

5. 选择排序代码

#include<stdio.h>

//选择排序 此处演示从小到大排序
void selectSort(int arr[], int length)
{
	int i,j,temp;
	for (i = 0; i < length-1; i++) //从第一个位置开始选择最小的
	{
		for (j = i+1; j < length; j++) {//与剩下的依次比较
			if (arr[i] > arr[j]) //交换
			{
			    temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
	}
}

int main() 
{
	//待排序数组
	int length = 10;
	int arr[10] = {1,3,5,7,2,4,6,8,10,9};
	int i;
	printf("\n排序前:");
	for (i = 0; i < length; i++)
	{
		printf("%d ",arr[i]);
	}
	//排序
	selectSort(arr, length);
	printf("\n排序后:");
	for (i = 0; i < length; i++)
	{
		printf("%d ", arr[i]);
	}
	return 1;
}

6. 后语

说实话平时也能写出排序来,但是还真分不清自己到底用了什么排序…借此机会回顾下可能是的,最初的算法。


如有问题请扫码联系我
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页