冒泡排序
大数下沉
1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应 该会是最大的数。
3)针对所有的元素重复以上的步骤,除了最后一个。
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
for (int i=0; i1; i++){
每趟排序都会确定一个数,所以需要再循环len-i次,但因为每次都是 //相邻的两个数进行比较,为了a[j+1]不越界,让j循环到len-i-1时停止。
}
选择排序思想
外层 len-1
每一趟都是拿着一个元素与后面其他元素进行比较,找出最小值 void selectSort(int array[],int len)
{
1、确定需排序趟数
for (int i = 0 ; i < len - 1; i++) { // 2、每一趟怎么处理
}
}
int arr[] = {..........};
选择排序代码实现:
void
select_sort(
int
*a,
int
n)
{
register
int
i,j,min,t;
for
(i=0;i
{
min=i;
//查找最小值
for
(j=i+1;j
if
(a[min]>a[j])
min=j;
//交换
if
(min!=i)
{
t=a[min];
a[min]=a[i];
a[i]=t;
}
}
}
冒泡排序代码实现:
#include
#define SIZE 8
void
bubble_sort(
int
a[],
int
n);
void
bubble_sort(
int
a[],
int
n)
{
int
i, j, temp;
for
(j = 0; j < n - 1; j++)
for
(i = 0; i < n - 1 - j; i++)
{
if
(a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
int
main()
{
int
number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12};
int
i;
bubble_sort(number, SIZE);
for
(i = 0; i < SIZE; i++)
{
printf
(
"%d"
, number[i]);
}
printf
(
"\n"
);