2 qq 37130151 qq_37130151 于 2017.01.05 10:28 提问

c语言问题关于冒泡法排序的

不明白后边的冒泡法排序是j<n-k求解释图片图片

5个回答

Tiger_Zhao
Tiger_Zhao   Rxr 2017.01.05 11:00
已采纳

这个函数写得不够直观。
j循环的效果就是把a[0]..a[n-k]最重(大)的一个成员“沉”到a[n-k]处。
大概叫“沉没法”比较恰当。
其实把两个循环写成下面的方式会更好理解

for(k=n-1;k>=1;k--)
    for(j=0;j<k;j++)
welan123123
welan123123   2017.01.05 10:44

冒泡排序的核心是每次找出剩余对象中最大或最小值,j<n-k 中k就代表已经找出来的最大或最小值的数量,接下来只需要在剩余对象中循环比较找出最大或最小值

qq_29594393
qq_29594393   Ds   Rxr 2017.01.05 11:00
cmqwan
cmqwan   2017.01.05 11:19

冒泡排序就是:每一轮都找到最大的一个数,然后放到最后。
第一个for循环表示的就是一共要循环几轮,对应k。
第二个for循环是在每一轮里面对每个数进行循环,对应j。
总个数是n。
你可以按照程序的思维走一遍:
第一轮,每个都会走一遍,找到最大的放在最后。k=1,j=5。
第二轮,按理说每个都会走一遍,但是第一轮已经把最大的放到最后,所以最后一个肯定比前面的都大,就没必要在比较一次了,所以少比一次。k=2,j=4。
第三轮,同理,最后2个肯定比前面的大,就少比2次。k=3,j=3。
。。。
然后找下规律,k,j,n是一个等式,就可以得出结论的呢

xuan521521
xuan521521   2017.01.05 11:22

治好了老子多年的颈椎病

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【C语言】冒泡法排序的三种实现方法
冒泡法排序的三种实现方法,数组,函数,指针!
C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序
C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序
C语言冒泡法排序[经典]
C语言冒泡法排序[经典] 冒泡法排序的算法思想是:        通过无序区中相邻记录关键字间的比较和位置交换,使关键字的记录如气泡一般逐渐往上“漂浮”至“水面”。整个算法是从最下面的记录开始,对每两个相邻的关键字进行比较,且使关键字较小的记录换至关键字较大的记录之上,使得经过一趟冒泡排序后,关键字最小的记录到达最上端,接着,再在剩下的记录中找关键字最小的记录,并把它换在第二个位置上。以此类推
冒泡法排序(c语言)
7-1 冒泡法排序(20 分) 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。 本题要求对任意给定的K(N),输出扫描完第K遍后的中间结果数列。 输入格式
C语言冒泡排序法和选择排序法的区别
冒泡排序法: #define _CRT_SECURE_NO_WARNINGS 1 #include #include #include void rank(int arr[], int len) { int i = 0; int j = 0; int temp = 0; for (i = 0; i < len-1; i++) { for (j = 0; j < len-1- i;
常见排序方法(c语言)---冒泡法,选择法
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 /* 用选择法对10个数进行排序 */ #include void main(
【c语言】用冒泡法对10个字符由小到大排序
#include #include #define N 10 char str[N]; int main() { void sort(char []); int i,flag; for(flag=1;flag==1;) { printf("input string:\n"); scanf("%s",&str); if(strlen(str)>N) printf("st
C语言:冒泡排序法(升序排序法)
任务代码: 执行情况: 知识总结: 冒泡排序法:也叫升序排序法,但是相比起二分法查找只能应用于有序数列,二如何将一个无序数列变的有序就可以使用冒泡排序法!!! 对上面的过程进行总结: 该思想体现在成续上的解法是: 实例: 冒泡排序不仅仅可以应用于数字同样可以应用于字符字母的快速排序: 心得体会:
c语言中冒泡法排序(从小到大)
#include         void main()    {        int a[10],c,i;        for(i=0;i         scanf("%d",&a[i]);        }                for(i=0;i         for(int j=0;j             if(a[j]>a[j+1]){   
用冒泡法和选择法对10个整数排序(C语言 数组)
1.区别:        两者最大的区别在于算法本身。        冒泡法是相邻元素两两比较,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的顺序是从后往前,其余元素可以作相对位置的调整。可以进行升序或降序排序。        选择法是每趟选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。2.冒泡法:...