C语言 数组的查找和排序方法 1.顺序查找 2.二分查找; 1.(简单)选择排序法 2.冒泡排序法 3.(直接)插入排序法

C语言 数组的查找和排序方法 1.顺序查找 2.二分查找; 1.(简单)选择排序法 2.冒泡排序法 3.(直接)插入排序法,第1张

C语言 数组查找排序方法 1.顺序查找 2.二分查找; 1.(简单)选择排序法 2.冒泡排序法 3.(直接)插入排序法

文章标题
  • 数组的定义和初始化
  • 查找
    • 1.顺序查找
    • 2.二分查找
  • 排序方法
    • 1.(简单)选择排序法
    • 2.冒泡排序法
    • 3.(直接)插入排序法

数组的定义和初始化

   数组在定义是要注意:
  1.数组同变量一样,需要先定义后才能使用
  2.定义数组时,[ ]内不能用变量表示元素个数(在引用时可以,如for内初始化数组),也不能用实数表示元素个数

  一维数组初始化要注意,{ }只能在数组定义的同时使用。数组不初始化,里面的数据将会是随机数
  正确示范:

	
	int a[5];
	a[0]=0;
	a[1]=1;
	a[2]=2;
	a[3]=3;
	a[4]=4;
	
	int a[5]={0, 1, 2, 3, 4};	
	int a[]={0, 1, 2, 3, 4};	
	
	int a[5]={};	
	int a[5]={0};	

  错误示范:

	
	int a[5]=[0, 1, 2, 3, 4];	
	int a[5]={0, 1, 2, 3, 4};	
	
	int a[5];
	a={0, 1, 2, 3, 4};	
	
	int a[5]=1;		
	int a[5]={1};	

  
  

查找 1.顺序查找

  查找数组a有没有值为25的元素

#include 
main()
{
	int a[10]={1, 0, 24, 30, 5, 9, 30, 25, 55, 49};
	int i, j;
	for(i=0; i<10; i++)
		if(a[i]==25)	
			break;
	if(i>9)
		printf("没找到25");
	else
		printf("25的下标为%d", i);	

	return 0;
}

  
  

2.二分查找

  二分查找又称对分查找、折半查找。要使用二分查找有一个前提:数组中的数据必须由大到小或者小到大的有序顺序排列。

#include 
#include 
int main()
{
    
    int array[]={0, 1, 3, 6, 9, 14, 18, 22, 23, 24, 25, 28, 30, 33, 38, 44, 50};
    int low=0,high=sizeof(array)/sizeof(array[0]);	
    int mid=0;
    int target=25;

    while(low<=high)
    {
		mid=(low+high)/2;
		if(array[mid]target)
			high=mid-1;
		else
			break;		
	}
	if(low>high)
		printf("没找到25");
	else
		printf("找到了,下标是%d", mid);
		
    return 0;
}

  
  

排序方法 1.(简单)选择排序法

  找到元素最小值/最大值,把它放在数组头,接着找剩下元素里的最值,把它放在上次找到的最值后面,直到最后一个元素。
  方法一:始终保持a[i]是一个更小值,直到它为剩下元素里值最小

#include 
#include 
#include 


int main()
{
	int a[100]={};
	int i, j, t;
	int n=sizeof(a)/sizeof(a[0]);	

	
	srand(time(NULL));
	
	for(i=0; i  
  方法二:找到最小值的下标,然后和a[i]交换,使最小值位于前头

#include 
#include 
#include 


int main()
{
	int a[100]={};
	int i, j, k, t;
	int n=sizeof(a)/sizeof(a[0]);	

	
	srand(time(NULL));
	
	for(i=0; i  
  

2.冒泡排序法

  冒泡排序,顾名思义,元素会像水里的泡泡一样,从底部一直上升到顶部,即前后元素相比较,大值元素被安排到数组尾部,小值元素在交换的时候自然而然的会排在头部。

#include 
#include 
#include 


int main()
{
	int a[100]={};
	int i, j, t;
	int n=sizeof(a)/sizeof(a[0]);	

	
	srand(time(NULL));
	
	for(i=0; i  
  

3.(直接)插入排序法

  跟打扑克牌时差不多,把选中元素插入到有序序列合适的位置中。

#include 
#include 
#include 


int main()
{
	int a[100]={};
	int i, j, k, data;
	int n=sizeof(a)/sizeof(a[0]);	

	
	srand(time(NULL));
	
	for(i=0; idata)	
				break;
		k=j;
		for(j=i; j>k; j--)	
			a[j]=a[j-1];
		a[k]=data;
	}
	

	
	for(i=0; i					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5670698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存