数组:
(Array)是有序的元素序列。
[1] 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。
[1] 这些有序排列的同类数据元素的集合称为数组。
数组是用于储存多个相同类型数据的集合。
arr数组 | 1 | 2 | 3 | 4 | 5 |
下标i | 0 | 1 | 2 | 3 | 4 |
冒泡排序:
![](https://img-blog.csdnimg.cn/img_convert/a6e14007426b018ea9af17584b3b4c7f.gif)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//冒泡排序
void bubblesort(int arr[], int len) {
int flag = 1; //flag表示排序过程中是否交换过元素值
for (int i = 0; flag && i < len - 1; i++) {
flag = 0;
for (int j = 0; j < len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = 1;
}
}
}
}
void test01()
{
int arr[15] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
bubblesort(arr, sizeof(arr) / sizeof(int));
//遍历排序后结果
for (int i = 0; i < 15; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
test01();
system("pause");
return EXIT_SUCCESS;
}
选择排序
![](https://img-blog.csdnimg.cn/img_convert/8f16877a03ecdf6c841801d727af36c8.gif)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//选择排序
void selectsort(int arr[], int len)
{
for (int i = 0; i < len ; i++)
{
int min = i; //认定min就是最小值的下标
for (int j = i + 1; j < len; j++)
{
if (arr[j] < arr[min]) //选择关键字最小的记录
{
min = j; //更新下标
}
}
if (min != i) //如果最小值所在位置不为 i,交换最小值和第 i 个元素的位置
{
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}
void test01()
{
int arr[15] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
selectsort(arr, sizeof(arr) / sizeof(int));
//遍历排序后结果
for (int i = 0; i < 15; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
test01();
system("pause");
return EXIT_SUCCESS;
}
直接插入:
![](https://img-blog.csdnimg.cn/img_convert/5797dcbfbd1ab3337f29d815db5dc369.gif)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//直接插入排序
void insertsort(int arr[], int len)
{
//外层循环,从第二个元素开始遍历
for (int i = 1; i < len; i++)
{
int temp = arr[i];
int j = i - 1;
for (; j >= 0 && arr[j] > temp; j--) //内层循环遍历j插入的位置
{
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
}
void test01()
{
int arr[15] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
insertsort(arr, sizeof(arr) / sizeof(int));
//遍历排序后结果
for (int i = 0; i < 15; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
test01();
system("pause");
return EXIT_SUCCESS;
}