#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
//该代码是 win10电脑下编译器IDE是 vs2017社区版, 如果你的电脑的ide 运行不了,请 自行检查
//一个简单的排序法
// 功能实现:定义一个整型数组,将里面的数据进行从小到大排序。
// 算法分析:首先从第一个数跟后面的数进行比较,如果你比我大,那么我们交换位置,
//假设这个数组的数据是3,1,2,9,6,8,7,5,4,0
//第一个数据是3,那么算法的开始是第一个数3跟后面的1.2...进行比较
//3大于1,那么他们两交换一下位置,数据就变成了1 3 2 9....
//3再和后面的数据比较,到2,3大于2,又互换一下。
//数据变成2 1 3...以此类推
//拿个简单的例子来说就是争夺武林盟主,你比我厉害,你上位,我退下,谁最厉害,谁就排在最后面
void maiaan()
{
int a[] = { 3,1,2,9,6,8,7,5,4,0 };//定义一个整形数组,他有一些整形的数据
printf("\n排序前\n");
int n = sizeof(a) / sizeof(a[0]);//用整个数组个数的长度,除以第一个数组元素的长度,得出元素的个数
for (int i = 0; i < n; i++)
{
printf("%4d", a[i]);
}
// 接下来将这些数据用一个算法来进行排序
for (int i = 0; i < n - 1; i++) // 每次最大元素就像气泡一样"浮"到数组的最后
{
for (int j = i; j < n; j++) // 依次比较相邻的两个元素,使较大的那个向后移
{
if (a[i] > a[j]) //如果第一个数大于第二个数,就把他们位置进行交换,相当于大的数后置
{
// 交换数据需要一个临时变量temp
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
// 交换后,我们可以打印数据,看看是否进行了排序,测试算法,或者代码的可靠性
printf("\n排序后\n");
for (int i = 0; i < n; i++)
{
printf("%4d", a[i]);
}
system("pause");
}
// 当一个数组作为函数形参的时候,传递给函数的参数实际上是一个指针,
// 在32位的情况下,他是4个字节,在64位的情况下,他是8个字节
void 打印array(int *a,int n)
{
for (int i = 0; i < n; i++)
{
printf("%4d", a[i]);
}
}
void 排序array(int *a, int n)
{
//接下来将这些数据用一个算法来进行排序
for (int i = 0; i < n - 1; i++)// 每次最大元素就像气泡一样"浮"到数组的最后
{
for (int j = i; j < n; j++)// 依次比较相邻的两个元素,使较大的那个向后移
{
if (a[i] > a[j])//如果第一个数大于第二个数,就把他们位置进行交换,相当于大的数后置
{
//交换数据需要一个临时变量temp
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//新建一个main函数,这次是用来实现函数的封装的功能
void main()
{
int a[] = { 3,1,2,9,6,8,7,5,4,0 };//定义一个整形数组,他有一些整形的数据
printf("\n排序前\n");
//写一个函数,调用这个函数,用来实现数组数据的输出
int n = sizeof(a) / sizeof(a[0]);//用整个数组个数的长度,除以第一个数组元素的长度,得出元素的个数
打印array(a, n);
printf("\n排序后\n");
排序array(a, n);//排序后,再打印数据一次
打印array(a, n);
system("pause");
}
#include<stdlib.h>
#include<Windows.h>
//该代码是 win10电脑下编译器IDE是 vs2017社区版, 如果你的电脑的ide 运行不了,请 自行检查
//一个简单的排序法
// 功能实现:定义一个整型数组,将里面的数据进行从小到大排序。
// 算法分析:首先从第一个数跟后面的数进行比较,如果你比我大,那么我们交换位置,
//假设这个数组的数据是3,1,2,9,6,8,7,5,4,0
//第一个数据是3,那么算法的开始是第一个数3跟后面的1.2...进行比较
//3大于1,那么他们两交换一下位置,数据就变成了1 3 2 9....
//3再和后面的数据比较,到2,3大于2,又互换一下。
//数据变成2 1 3...以此类推
//拿个简单的例子来说就是争夺武林盟主,你比我厉害,你上位,我退下,谁最厉害,谁就排在最后面
void maiaan()
{
int a[] = { 3,1,2,9,6,8,7,5,4,0 };//定义一个整形数组,他有一些整形的数据
printf("\n排序前\n");
int n = sizeof(a) / sizeof(a[0]);//用整个数组个数的长度,除以第一个数组元素的长度,得出元素的个数
for (int i = 0; i < n; i++)
{
printf("%4d", a[i]);
}
// 接下来将这些数据用一个算法来进行排序
for (int i = 0; i < n - 1; i++) // 每次最大元素就像气泡一样"浮"到数组的最后
{
for (int j = i; j < n; j++) // 依次比较相邻的两个元素,使较大的那个向后移
{
if (a[i] > a[j]) //如果第一个数大于第二个数,就把他们位置进行交换,相当于大的数后置
{
// 交换数据需要一个临时变量temp
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
// 交换后,我们可以打印数据,看看是否进行了排序,测试算法,或者代码的可靠性
printf("\n排序后\n");
for (int i = 0; i < n; i++)
{
printf("%4d", a[i]);
}
system("pause");
}
// 当一个数组作为函数形参的时候,传递给函数的参数实际上是一个指针,
// 在32位的情况下,他是4个字节,在64位的情况下,他是8个字节
void 打印array(int *a,int n)
{
for (int i = 0; i < n; i++)
{
printf("%4d", a[i]);
}
}
void 排序array(int *a, int n)
{
//接下来将这些数据用一个算法来进行排序
for (int i = 0; i < n - 1; i++)// 每次最大元素就像气泡一样"浮"到数组的最后
{
for (int j = i; j < n; j++)// 依次比较相邻的两个元素,使较大的那个向后移
{
if (a[i] > a[j])//如果第一个数大于第二个数,就把他们位置进行交换,相当于大的数后置
{
//交换数据需要一个临时变量temp
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//新建一个main函数,这次是用来实现函数的封装的功能
void main()
{
int a[] = { 3,1,2,9,6,8,7,5,4,0 };//定义一个整形数组,他有一些整形的数据
printf("\n排序前\n");
//写一个函数,调用这个函数,用来实现数组数据的输出
int n = sizeof(a) / sizeof(a[0]);//用整个数组个数的长度,除以第一个数组元素的长度,得出元素的个数
打印array(a, n);
printf("\n排序后\n");
排序array(a, n);//排序后,再打印数据一次
打印array(a, n);
system("pause");
}