El lenguaje C usa punteros para implementar el método de selección y el método de burbujeo para ordenar números

El lenguaje C usa punteros para implementar el método de selección y el método de burbujeo para ordenar números


Acabo de aprender el capítulo del puntero en el prefacio . La mayoría de los ejercicios que encontré fueron para reescribir el código escrito previamente usando el método del puntero, pero para ser honesto, muchos de ellos no son tan simples como pensaba, y no creo es necesario, pero se dice que el puntero a la lista vinculada es muy útil, así que espero que todos presten atención al puntero y lo compartan para que todos lo vean.

Clasificación selectiva

//选择算法
//指针选择法排序   
#include<stdio.h>
main(){
    
    

int  a[10],i,j,*p;            //变量全部初始化

printf("please input ten nums devise keyboard!\n");
p=a;
for(i=0;i<10;i++){
    
          //从键盘输入数组元素
 scanf("%d",&*(p++));
}
	
p=a;                                  //核心部分选择法排序
for(i=0;i<10-1;i++){
    
            //执行N-1次(第一个与下一个换,最后一个不用换)
int min = i;                       //这个min记录的i,就是将第i个与全数组比较调换
for(j=i+1;j<10;j++){
    
             //j=i+1;会从还没排好的地方开始
      if(*(p+j)<*(p+min)){
    
        //逐一比较找出目标值
	min = j;
	}	
}
if(min!=i){
    
                              //如果目标值不是当前值就开始调换
	int temp;
	temp = *(p+i);
	*(p+i) = *(p+min);
	*(p+min) = temp;
     }
}

    p=a;//打印排序完成后的数组元素
for(i=0;i<10;i++){
    
    
    printf("%d ",*(p++));
	}
   printf("\n");
}

Clasificación de burbujas

//冒泡法    mine 非函数
#include<stdio.h>
main(){
    
    
	
int a[1000];                         //划定一个最大的数组长度
 int *p,n,i,j;
 printf("请输入数组的长度:");
 scanf("%d",&n);
 printf("请输入数组各元素:\n");
 
 p=a;                                //开始从键盘接收数组元素
 for(i=0;i<n;i++){
    
    
      scanf("%d",&*(p++));
   }

 p=a;		 //冒泡法核心   
 for(i=0;i<n-1;i++){
    
         //也是一样的两两一比,最后一个不需要
     for(j=0;j<n-1-i;j++){
    
      //j用来记录比较次数,仅比较未达标的
         if(*(p+j)>*(p+j+1)){
    
    
	 int temp;
	temp=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=temp;
            }
        }
 }

  p=a;       
  for(i=0;i<n;i++){
    
    
  printf("%d ",*(p++)); 
 }
}

Aquí todo es casi igual. Esto está escrito principalmente para nuevos principiantes como yo. Aún no hemos aprendido la función. El código que escribimos está escrito en el entorno C. Después de todo, no recuerdo nada cuando llegué a escuela después de las vacaciones.
¡Date un like todos los días!
Espero poder brindarte ayuda.

Supongo que te gusta

Origin blog.csdn.net/m0_51465487/article/details/115253613
Recomendado
Clasificación