简单排序:
-
int array[] = {12,8,13,9,223,44,5,66,7,88};
:声明并初始化一个整型数组array
,包含10个元素。 -
int i; int j; int tmp;
:声明三个整型变量i
、j
和tmp
,分别用于循环索引和临时存储交换值。 -
int len = sizeof(array)/sizeof(array[0]);
:计算数组array
的长度,即元素个数。sizeof(array)
得到数组占用的总字节数,sizeof(array[0])
得到数组单个元素的字节数,二者相除得到元素个数。 -
//简单选择排序法
:注释,说明接下来的代码是实现简单选择排序。 -
for(i=0;i<len-1;i++)
:外层循环,i
从0开始,直到len-2
(因为len-1
是最后一个元素的索引)。 -
for(j=i+1;j<len;j++)
:内层循环,j
从i+1
开始,直到len-1
。 -
if(array[i] > array[j])
:如果当前外层循环的元素array[i]
大于内层循环的元素array[j]
。 -
tmp = array[i];
:将array[i]
的值存储到临时变量tmp
。 -
array[i] = array[j];
:将array[j]
的值赋给array[i]
。 -
array[j] = tmp;
:将tmp
的值(原array[i]
的值)赋给array[j]
。 -
for(i=0;i<len;i++)
:循环遍历排序后的数组。 -
printf("%d ",array[i]);
:打印数组array
的每个元素。
这个程序首先定义了一个包含10个整数的数组,然后使用简单选择排序算法对其进行排序。排序完成后,程序遍历并打印排序后的数组元素。简单选择排序是一种不稳定的排序算法,其时间复杂度为O(n^2),在数组元素数量较大时效率较低。
#include <stdio.h>
int main()
{
int array[] = {12,8,13,9,223,44,5,66,7,88};
int i;
int j;
int tmp;
int len = sizeof(array)/sizeof(array[0]);
//简单选择排序法
for(i=0;i<len-1;i++){
for(j=i+1;j<len;j++){
if(array[i] > array[j]){
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
for(i=0;i<len;i++){
printf("%d ",array[i]);
}
return 0;
}
冒泡排序:
-
int array[] = {12,8,13,9,110,34,1,90,85,101,13,13};
:声明并初始化一个整型数组array
,包含12个元素。 -
int i; int j; int tmp;
:声明三个整型变量i
、j
和tmp
,分别用于循环索引和临时存储交换值。 -
int len = sizeof(array)/sizeof(array[0]);
:计算数组array
的长度,即元素个数。 -
for(i=0;i<len-1;i++)
:外层循环,i
从0开始,直到len-2
。 -
for(j=0; j<len-1-i;j++)
:内层循环,j
从0开始,直到len-2-i
。这里的len-1-i
是为了防止已经排序好的部分再次进行比较。 -
if(array[j] > array[j+1])
:如果当前元素array[j]
大于下一个元素array[j+1]
。 -
tmp = array[j];
:将array[j]
的值存储到临时变量tmp
。 -
array[j] = array[j+1];
:将array[j+1]
的值赋给array[j]
。 -
array[j+1] = tmp;
:将tmp
的值(原array[j]
的值)赋给array[j+1]
。 -
for(i=0;i<len;i++)
:循环遍历排序后的数组。 -
printf("%d ",array[i]);
:打印数组array
的每个元素。
这个程序首先定义了一个包含12个整数的数组,然后使用冒泡排序算法对其进行排序。冒泡排序是一种简单的排序算法,通过重复遍历要排序的列表,比较每对相邻元素的大小,并在必要时交换它们的位置。排序完成后,程序遍历并打印排序后的数组元素。冒泡排序的时间复杂度为O(n^2),在数组元素数量较大时效率较低,但对于小规模数据集,它的实现简单且直观。
#include <stdio.h>
int main()
{
int array[] = {12,8,13,9,110,34,1,90,85,101,13,13};
int i;
int j;
int tmp;
int len = sizeof(array)/sizeof(array[0]);
for(i=0;i<len-1;i++){
for(j=0; j<len-1-i;j++){
if(array[j] > array[j+1]){
tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
}
for(i=0;i<len;i++){
printf("%d ",array[i]);
}
return 0;
}