[高分急C语言如何实现多线程有具体方案请提供!]你这个问题可是超过200分的啊, 这个往大了说是一个比较复杂的设计方案。 实际上C语言是没有多线程的概念的,但是我们可以通过Task来实现多任务。 简单的说,可以采取以下方案: 定...+阅读
求关于c语言冒泡排序法的讲解
冒泡排序法是简单的排序方法之一,它和气泡从水中往上冒的情况有
些类似。其具体做法是
(1)对于数组a中的1至n个数据,先将第n个和第n-1个数据进行比较,如果
a(n)
然后比较第n-1个和第n-2个数据;依次类推,直到第2个数据和第1个数据 进行比较交换,这称为一趟冒泡。这一趟最明显的效果是:将最小的数据传到了 第1位。 由此还可推断出,对于n个数,一趟应该进行n-1 次比较操作。算法流程如 下图所示: (2)然后,对2至n个数据进行同样操作,则具有次小值的数据被安置在第2位 上。 (3)重复以上过程,每次的移动都向最终排序的目标前进,直至没有数据需要交换为止。 这种排序的方法被形象地比喻成“冒泡”,在排序过程中,小的数就如气泡一般逐层上冒,而大的数逐个下沉。 #include<stdio.h>; //链接标准头文件 #define N 5 //定义常量N并赋值为5 void main() //主函数入口 { //表示主函数开始 int i,j; //定义整形变量i和j int grade[N],temp; //定义N维(N=5,也就是五维啦^^)整形数组和整形变量temp printf("输入5个数\n"); //在屏幕上显式“输入5个数”并且换行 for(i=0;i<N;i++) //开始for循环,从i=0,每次加1,直到i=4,共需循环5次 { //循环体开始 scanf("%d",&grade[i]); //依次获取用户输入的整数值并存入数组grade中 } //循环结束 for(i=0;i<N;i++) //开始外层for循环,从i=0,每次加1,直到i=4 { //外层循环体开始 for(j=0;j<N-1-i;j++) //开始外层for循环,从j=0,每次加1直到i等于外层循环的N-j-1 { //内层循环体开始 if(grade[j]<grade[j+1]) //条件判断 { //如果整形数组前面的数比其后的小,执行以下语句 temp=grade[j+1]; //将比较大的数赋值给temp grade[j+1]=grade[j]; //将比较小的数赋值给数组中后面的变量 grade[j]=temp; //将比较大的数赋值给数组中前面的变量 } //从此便完成大小变量的交换,使得大值往前放 } //结束内层循环 } //结外内层循环,完成排序 printf("最后排序为:\n");//在屏幕显式“最后排序为:”并换行 for(i=0;i<N;i++) //同开始的for循环类似 { //开始循环输出 printf("%d",grade[i]); //只是这里要逐个输出数组中的五个数值 } //结束循环输出 printf("\n"); //输出换行到屏幕,看不到什么效果,可删掉 } //结束main()函数 /* 用冒泡排序法对一维整型数组中的十个数升序排序 */ #include int main() {int i,j,t,a[10]; printf("Please input 10 integers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) /* 冒泡法排序 */ for(j=0;j<10-i-1;j++) if(a[j]>a[j+1]) {t=a[j];/* 交换a[i]和a[j] */ a[j]=a[j+1]; a[j+1]=t; } printf("The sequence after sort is:\n"); for(i=0;i<10;i++) printf("%-5d",a[i]); printf("\n"); system("pause"); return 0; } 其中i=0时: j从0开始a[0],a[1]比较大小,把其中的较大者给a[1],然后j++,a[1]和a[2]再比较,再把两者中的 较大者给a[2],这样a[0],a[1],a[2]中的最大者已经交换到a[2]中,这样继续直到j=10-i-1=9这样 a[9]中的为10个数中的最大数。 然后i=1时: 由于最大数已找到并放到a[9]中,所以这一次循环j最大只需到10-i-1=8,即a[8]即可,再次从j=0开始a[j]和a[j+1]两两比较交换,最后次大数放到a[8]中 然后i++,继续... 当i=9时已经过9次两两比较完成所有排序,i<9不再成立退出比较。 对于n个数,只需要进行n-1次外循环的两两比较就完成排序。 至于按降序排列只需将if(a[j]>a[j+1])改为if(a[j]
/* 用改进型冒泡排序法对一维整型数组中的十个数升序排序 */ #include int main() {int i,j,t,a[10],flag; printf("Please input 10 integers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<9;i++) /* 改进型冒泡法排序 */ { flag=0; for(j=0;j<10-i-1;j++) if(a[j]>a[j+1]) { t=a[j]; /* 交换a[i]和a[j] */ a[j]=a[j+1]; a[j+1]=t; flag=1; } if(flag==0)break; } printf("The sequence after sort is:\n"); for(i=0;i<10;i++) printf("%-5d",a[i]); printf("\n"); system("pause"); return 0; } 这个和上面的实质一样,只是加了一个标志flag,当在一次大循环(即外层循环)内,在内层循环中如果 没有发生一次交换,那么就表示a[0]
#include void sort(int a[],int n) { int i,j,small,temp; for(i=0;i { small=i; for(j=i+1;j { if(a[j]
small=j; if(small!=i) { temp=a[i]; a[i]=a[small]; a[small]=temp; } } void main() { int a[]={2,3,4,12,5}; int n=5; sort(a,n); for(i=0;i { printf("%d ",a[i]); ) } } } } #include void sort(int a[],int n) { int i,j,small,temp; for(i=0;i { small=i; for(j=i+1;j { if(a[j]
small=j; if(small!=i) { temp=a[i]; a[i]=a[small]; a[small]=temp; } } } } void main() { int a[]={2,3,4,12,5}; int n=5; sort(a,n); for(i=0;i { printf("%d ",a[i]); } } 刚才括号有点问题 延伸阅读: C中冒泡排序的算法思想private void bubble_sort(int[] a, int size) { bool flag = true; int temp = 0; /* Temporary value for swapping two elements */ for (int i = 0; i { flag = true; f... 冒泡法和选择法排序的思想冒泡和快速排序的区别在于:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的元素。将待排序的元素看作是竖着排列的"气泡",较小的元素比较轻,从而要往上浮。在冒泡排序... C冒泡排序的基本思想和步骤冒泡排序顾名思义就是大的下沉,小的上浮,当然,可以扩展为小的下沉,大的上浮 比如有以下数据 源数据 B E D C A 第一轮 B D C A E 第二轮 B C A D E 第三轮 B A C D E 第四轮 A B... 具体要求: 1熟悉和了解冒泡排序的算法思想和基本理论并通过//flag为标记位 void bubble_sort(int array[],int n) { int i,j,flag,temp; for (i = 0; i { flag = 1; for (j = 0; j { if (array[j] >array[j+1]) { temp= array[j]; ar... C语言冒泡排序法的详细注释/* 用冒泡排序法对一维整型数组中的十个数升序排序 */ #include <stdio.h> int main() {int i,j,t,a[10]; printf("Please input 10 integers:\n"); for(i=0;i<10;i++) scanf(... 用c语言表达起泡排序算法的核心思想冒泡排序法的基本思想是: 第一:在a[0]到a[N-1]的范围内,依次比较两个相邻元素的值, 若a[J]>a[J+1],则交换a[J]与a[J+1],J的值取0,1,2,……,N-2;经过这样一趟冒泡,就把这N个数中最大的... 链式基数排序的算法思想C语言越多越仔细越好参考 /* 基数排序的算法源程序*/ #include#define D 3 /* D为排序码的最大位数 */ #define R 10 /* R为基数 */ typedef int KeyType; typedef int DataType; struct Node; /... 司法考试各个法的分值排序是什么样的关于司法考试卷一 纵观历年司考,个人认为卷一不存在难度问题,考生之所以本卷未得高分,原因在于被本卷的广度难倒。而对付这种“广在天边,细如针尖”的司考题,我们的备考也要针锋... 求计算机机房管理C语言程序/* Note:Your choice is C IDE */ #include "stdio.h" #include <time.h> #define N 60 int k=1; int i; time_t rawtime; time_t rawtime1; struct tm * timeinfo1; struct a...C语言冒泡排序法
C语言冒泡排序法的详细注释
C语言冒泡排序