Q1:求 c语言选择排序法和 冒泡排序法代码!
选择排序:
void select_sort(int a[],int n) //传入数组的要排序的元素个数
{int i,j,min,t;
for(i=0;i { min=i; //min:当前最小值下标 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;} } } 冒泡排序: void bubble_sort(int a[], int n) //传入数组的要排序的元素个数 { int i, j, t; for (j=0; j for (i= 0; i if(a[i]>a[i+1]) //若大小顺序不符,就交换 {t=a[i]; a[i]=a[i+1]; a[i+1]=t; }
Q2:C语言选择法排序
排序如下:
voidSelectSort(RecordTyper[],intlength) /*对记录数组r做简单选择排序,length为待排序记录的个数*/
{inttemp;for(i=0;i第1趟:12与49交换:12{27 65 97 76 49 38}
第2趟:27不动 :12 27{65 97 76 49 38}
第3趟:65与38交换:12 27 38{97 76 49 65}
第4趟:97与49交换:12 27 38 49{76 97 65}
第5趟:76与65交换:12 27 38 49 65{97 76}
第6趟:97与76交换:12 27 38 49 65 76 97 完成
选择排序法 是对 定位比较交换法(也就是冒泡排序法) 的一种改进。选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。
简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
拓展资料
下面也写个例子:
由大到小时:
intmain(void){inta[10];inti,j,t,k;for(i=0;i<10;i++)scanf("%d",&a[i]);/*输入10个数,比武报名,报名费用10000¥^_^*/for(i=0;i<9;i++)/*10个数,所以只需比9次*/{k=i;/*裁判AND记者实时追踪报道比赛情况*/for(j=i+1;j<10;j++)if(a[k]由小到大时:
intmain(void){inta[10];inti,j,t,k;for(i=0;i<10;i++)scanf("%d",&a[i]);/*输入10个数,比武报名,报名费用10000¥^_^*/for(i=0;i<9;i++){k=i;/*裁判AND记者实时追踪报道比赛情况*/for(j=i+1;j<10;j++)if(a[k]>a[j])k=j;if(k!=i){t=a[i];a[i]=a[k];a[k]=t;}/*t发放奖品*/}for(i=0;i<=9;i++)printf("%4d",a[i]);/*显示排序后的结果*/return0;}
Q3:c语言怎样通过函数调用实现选择排序法
c语言通过函数调用实现选择排序法:
1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength);
2、写两个循环,在循环中应用简单选择插入排序:
int SelectSort(int * ListData,int ListLength)
{
int i , j ;
int length = ListLength;
for(i=0;i<=length-2;i++)
{
int k = i;
for(j=i+1;j<=length-1;j++)
{
if(ListData[k]>ListData[j])
{
k=j;
}
}
if(k!=i)
{
int tmp = ListData[i];
ListData[i] = ListData[k];
ListData[k] = tmp;
}
}
return 0;
}
3、对编好的程序进行测试,得出测试结果:
int main()
{
int TestData[5] = {34,15,6,89,67};
int i = 0;
printf("排序之前的结果\n");
for(i = 0;i<5;i++)
printf("|%d|",TestData[i]);
int retData = https://www.brrz.top/bazhishi/aldyjtapi/SelectSort(TestData,5);
printf("排序之后的结果:\n");
for(i = 0;i<5;i++)
printf("|%d|",TestData[i]);
return 0;
}
4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。
Q4:C语言中选择排序法和冒泡排序法代码。
选择排序:
void select_sort(int a[],int n) //传入数组的要排序的元素个数
{int i,j,min,t;
for(i=0;i { min=i; //min:当前最小值下标 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;} } } 冒泡排序: void bubble_sort(int a[], int n) //传入数组的要排序的元素个数 { int i, j, t; for (j=0; j for (i= 0; i if(a[i]>a[i+1]) //若大小顺序不符,就交换 {t=a[i]; a[i]=a[i+1]; a[i+1]=t; }
Q5:C语言利用递归实现插入排序,选择排序,快速排序,归并排序算法。 要求有注释 ! 谢谢各位大神!
//InsertionSort
void insertionSort(int a[], int size) {
int i, j, key; for (i = 0; i < size; i++) {
key = a[i];
j = i-1;
while (j >= 0 && key < a[j]) {//把元素插入到之前的有序元组中
a[j+1] = a[j];
j--;
}
a[j+1] = key;
}
}
//MergeSort
void merge(int a[], int p, int q, int r) { //合并两个子元组
int i, j, k, n1, n2;
int *array1, *array2;
n1 = q - p + 1,
n2 = r - q;
array1 = (int *)calloc(n1+1, sizeof(int));
array2 = (int *)calloc(n2+1, sizeof(int));
if (array1 == NULLarray2 == NULL) {
printf("Error: calloc failed in concat\n");
exit(EXIT_FAILURE);
}
for(i = 0; i < n1; i++)
array1[i] = a[p + i];
for(i = 0; i < n2; i++)
array2[i] = a[q + 1 + i];
array1[n1] = MAXNUMBER;
array2[n2] = MAXNUMBER;
i = 0, j = 0;
for(k = p; k <= r; k++)
if(array1[i] <= array2[j])
a[k] = array1[i++];
else
a[k] = array2[j++];
free(array1);
free(array2);
}
void mergeSort(int a[], int p, int r) {//归并的递归调用
int q;
if (p < r) {
q = (p+r)/2;
mergeSort(a,p,q);
mergeSort(a,q+1,r);
merge(a,p,q,r);
}
}
//QuickSort
int partition(int a[], int p, int r) {//快排的分组函数
int i, j, x, temp;
x = a[r];
i = p - 1;
for (j = p; j < r; j++)
if (x > a[j]) {
temp = a[++i];
a[i] = a[j];
a[j] = temp;
}
temp = a[++i];
a[i] = a[r];
a[r] = temp; return i;
}
void quickSort(int a[], int p, int r) { //快排
int q;
if (p < r) {
q = partition(a, p, r);
quickSort(a, p, q-1);
quickSort(a, q+1, r);
}
}
//随即版的quickSort
int randomPartition(int a[], int p, int r){
int i, temp;
i = rand();
while( i < pi > r)
i = rand();
temp = a[i];
a[i] = a[r];
a[r] = temp;
return partition(a,p,r);
}void randomQuickSort(int a[], int p, int r){
int q;
if(p < r){
q = randomPartition(a,p,r);
randomQuickSort(a,p,q-1);
randomQuickSort(a,q+1,r);
}
}
//BubbleSort();//冒泡排序
void bubbleSort(int a[], int size) {
int i, j, temp; for (i = size -1; i >= 0; i--)
for (j = 0; j < i; j++)
if (a[j] < a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}WWw.#bAzhishi.coM
Q6:C语言选择排序程序代码
代码:#include
{
void temp(int array[],int n);
int a[4],i;
printf("enter 4 number:\n");
for(i=0;i<4;i++)
scanf("%d",&a[i]);
temp(a,4);
printf("the temp array:\n");
for(i=0;i<4;i++)
{
printf("%5d",a[i]);
printf("\n");
}return 0;
}void temp(int array[],int n)
{
int i,j,k,t;
for(i=0;i
k=i;
for(j=i+1;j
t=array[k];array[k]=array[i];array[i]=t;
}
}效果图:【酷_酷_币】为您服务...