
#include
<stdioh>
void
Sort(
int
s,
int
n
)
{
int
p
=
s;
//定义一个指向数组首地址的指针
int
q,
tmp;
for(
;
p
<
s+10;
p++
)
//当指针移动到数组的末端结束
{
for(
q
=
p
;
q
<
s+10;
q++
)
//按照插入排序的方式执行
{
if(
q
<
p
)
{
tmp
=
p;
p
=
q;
q
=
tmp;
}
}
}
}
int
main()
{
int
i;
int
s[10]
=
{9,8,7,6,5,4,3,2,1,0};
Sort(s,10);
//调用排序函数
for(
i
=
0;
i
<
10;
++i
)
//输出排序后的结果
{
printf("%d
",s[i]);
}
printf("\n");
return
0;
}
提问人的追问 2010-07-26 11:57 #include stdioh
void main()
{
int data[10]; /为什么要写这个整型数组/ (申请一个内存空间,用于存储输入的数据)
int i,j,temp;
printf("Please input 10 numbers: \n");
for(i=0;i10;i++)/这是什么意思?是不是循环?循环到哪里才跳出来。/(这句和下一句一起为输入语句,应输入10个int类型数据)
scanf("%d",data[i]);/是不是输入I? /
for(i=0;i10-1;i++)/是不是表示I=0,I10-1时,I就加1?/(冒泡排序开始,和下面代码一起组成冒泡排序。首先检查i是否符合条件,如符合则继续运行,否则循环停止。您在注释中理解正确)
for(j=0;j10-i;j++)/是不是表示I=0,I10-I时,J就加1?/
if(data[j]data[j+1])
{
temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
};
printf("\nthe result of sort: \n");
for(i=0;i10;i++)
printf("% d",data[i]);
}
注:关于最后一个问题不是很懂您的意思,如果还有什么问题请继续追问,我们一同研究解决
冒泡排序是比较经典的排序算法。代码如下:
for(int i=1;i<arrlength;i++){
for(int j=1;j<arrlength-i;j++){
//交换位置
}
:
原理:比较两个相邻的元素,将值大的元素交换至右端。
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;
第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;
依次类推,每一趟比较次数-1;
……
举例说明:要排序数组:int[] arr={6,3,8,2,9,1};
for(int i=1;i<arrlength;i++){
for(int j=1;j<arrlength-i;j++){
//交换位置
}
参考资料:
//冒泡算法
int num[5];
//输入
for (int i = 0; i < 5; i++)
{
scanf("%d", &(num[i]));
}
bool fin = true;
while(con)
{
con = false;
//如果相邻两个数前一个比后一个小就交换
for (int i = 0; i < 4;i++)
if (num[i] < num[i + 1])
{
int n = num[i];
num[i] = num[i + 1];
num[i + 1] = n;
con = true;
}
//如果相邻两个数前一个都大于等于后一个con就会等于false退出循环
}
//输出
for (int i = 0; i < 5; i++)
{
printf("%d", num[i]);
}
void sort(int a, int n){
//当分组中的数据是1个或0个时,分组结束
if(n<=1)return;
//将数据分成两个组
int L,R;
L = 0;
R = n-1;
while(L<R){
while(L<R&&a[L]<=a[R]) R--;
swap(a[L], a[R]);
while(L<R&&a[L]<=a[R]) L++;
swap(a[L], a[R]);
}
//对左边的组再进行分组
sort(a, L);
//对右边的组再进行分组
sort(a+L+1,n-L-1);
}
以上就是关于编写一个C语言程序,利用指针对数组进行排序,并解释所编写的代码全部的内容,包括:编写一个C语言程序,利用指针对数组进行排序,并解释所编写的代码、C语言编程的系统中的排序代码,请逐条注释一下意思,谢谢,急用、java冒泡排序法代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)