冒泡排序每一趟排序把最大的放在最右边。
比如:
87 12 56 45 78
87和12交换:12 87 56 45 78
87和56交换: 56 87 45 78
87和45交换: 45 87 78
87和78交换: 78 87
到此第一趟排序结束,接下来的每一趟排序都是这样。
#include<stdio.h>void Print(int *num, int n)
{
int i
for(i = 0 i < n i++)
printf("%d ", num[i])
puts("\n")
return
}
void Bubble_Sort(int *num, int n)
{
int i, j
for(i = 0 i < n i++)
{
for(j = 0 i + j < n - 1 j++)
{
if(num[j] > num[j + 1])
{
int temp = num[j]
num[j] = num[j + 1]
num[j + 1] = temp
}
Print(num, n)
}
}
return
}
int main()
{
int num[8] = {87, 12, 56, 45, 78}
Bubble_Sort(num, 5)
return 0
}
C语言代码和运行结果如下:
可见成功按从大到小排序,望采纳~
附源码:
#include <stdio.h>
void sort(int a[], int n) {
int i, j, t
for (i = 0i <n - 1i++) {
for (j = 0j <n - 1 - ij++)
if (a[j] <a[j + 1]) { // 将小数交换到后面
t = a[j]
a[j] = a[j + 1]
a[j + 1] = t
}
}
}
void display(int a[], int n) {
int i
for (i = 0i <ni++)
printf("%d ", a[i])
printf("\n")
}
int main() {
int a[] = {1,3,2,8,0,6}
int n = sizeof(a) / sizeof(a[0])
printf("从大到小冒泡排序:\n")
sort(a, n)
display(a, n)
return 0
}
选择排序:
void select_sort(int a[],int n) //传入数组的要排序的元素个数
{int i,j,min,t
for(i=0i<n-1i++)
{ min=i //min:当前最小值下标
for(j=i+1j<nj++) //扫描余下的部分
if(a[min]>a[j]) //若有其它元素更小,就记录其下标
min=j
if(min!=i) //保若最小值不在排序区首位,就换到首位
{t=a[min]a[min]=a[i]a[i]=t}
}
}
冒泡排序:
void bubble_sort(int a[], int n) //传入数组的要排序的元素个数
{ int i, j, t
for (j=0j<n-1j++) //n个元素比较n-1轮
for (i= 0i<n-1-ji++) //比较相信的两个数
if(a[i]>a[i+1]) //若大小顺序不符,就交换
{t=a[i] a[i]=a[i+1]a[i+1]=t
}