C 求最大数,逆置数组 冒泡法

求第一,第二,第三大的值

#include <stdio.h>
int main(){
    int arr1[10]={1,3,2,5,4,7,5,6,9}; 
    int max        =0;
    int second_max =0;
    int third_max  =0;

	for(int a=0;a<10;a++){
		if(arr1[a] > max){
			third_max  =second_max;
			second_max =max;
			max        =arr1[a];
		}
	}
	printf("first  MAX = %d  \n",max);
	printf("second MAX = %d  \n",second_max);
	printf("third  MAX = %d  \n",third_max);
	return 0;
}
/*
请按任意键继续. . .
first  MAX = 9
second MAX = 7
third  MAX = 5
请按任意键继续. . .
*/

逆置数组

#include <stdio.h>
int main(){
    int arr1[10]={1,3,2,5,4,7,5,6,9}; 
	printf("-------原始元素--------\n");
	for(int a=0;a<10;a++){
		printf("arr1[%d]=%d\n",a,arr1[a]);
	}
	int  low=0;
	int high=9;
	int tmp_var;
	while(low<high){
		tmp_var    =arr1[low];
		arr1[low]  =arr1[high];
		arr1[high]   =tmp_var;
		low++;
		high--;
	}
	printf("-------分割线--------\n");
	for(int a=0;a<10;a++){
		printf("arr1[%d]=%d\n",a,arr1[a]);
	}
	return 0;
}   
/*
请按任意键继续. . .
-------原始元素--------
arr1[0]=1
arr1[1]=3
arr1[2]=2
arr1[3]=5
arr1[4]=4
arr1[5]=7
arr1[6]=5
arr1[7]=6
arr1[8]=9
arr1[9]=0
-------分割线--------
arr1[0]=0
arr1[1]=9
arr1[2]=6
arr1[3]=5
arr1[4]=7
arr1[5]=4
arr1[6]=5
arr1[7]=2
arr1[8]=3
arr1[9]=1
请按任意键继续. . .
*/

冒泡法

#include <stdio.h>
int main(){
    int arr1[10]={1,3,9,5,4,7,0,6,8,2}; 
	int tmp=0;
	int num=0;
	for(int i=0;i<10;i++){
		for(int j=0;j<10-i;j++){
			if(arr1[j]>arr1[j+1]){  //更改这个为小于号,数组的排序也会变
				tmp       =arr1[j];
				arr1[j]   =arr1[j+1];
				arr1[j+1] = tmp;
				num++;
			}
		}
	}
	printf("-------冒泡法排序用了%d次--------\n",num);
	for(int a=0;a<10;a++){
		printf("arr1[%d]=%d\n",a,arr1[a]);
	}
	return 0;
}   
/*
请按任意键继续. . .
-------冒泡法排序用了20次--------
arr1[0]=0
arr1[1]=1
arr1[2]=2
arr1[3]=3
arr1[4]=4
arr1[5]=5
arr1[6]=6
arr1[7]=7
arr1[8]=8
arr1[9]=9
请按任意键继续. . .

*/
时间: 2024-10-10 18:57:44

C 求最大数,逆置数组 冒泡法的相关文章

表逆置[数组和链表]

对于数组(也可为线性表),逆置就是首尾数据两两交换,首先计算交换的次数: 中间需要一个临时变量暂存数据,看似简单,其实有点绕,关键还是数组下标从0开始,这一点很麻烦!这种小题最练基础! 完整代码: #include <iostream> using namespace std; int main() { int a[]={1,2,3,4,5,7,8,9}; int len=sizeof(a)/sizeof(int);/*计算数组长度*/ int temp;/*临时变量*/ for(int i=

【C语言】单链表的相关热点面试题(包括:从尾到头打印,逆置,冒泡,寻找中间节点,倒数k节点)

从尾到头打印单链表 void FromTailToHeadPrint(SListNode*& head) {     stack<SListNode*> s;     SListNode* cur = head;     while (cur)     {         s.push(cur);         cur = cur->_next;     }     while (!s.empty())     {         cout << s.top()-&

(LeetCode)Rotate Array --- 逆置数组

Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4]. Note: Try to come up as many solutions as you can, there are at least 3 different ways to solve this pr

C语言创建一个数组,利用函数调用实现数组的初始化,逆置和清零

★创建一个数组,实现函数init初始化数组.empty清空数组.reverse函数完成数组元素的逆置. #include<stdio.h> #include<stdlib.h> #include<string.h> void menu() { printf("****************************************\n"); printf("***************1.初始化数组*************\n&

C语言:实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置

#include<stdio.h> void init(int arr[],int len) {  int i=0;  printf("初始化数组->:\n");  for(i=0;i<len;i++)  {    scanf("%d",&arr[i]);   }  } void reverse(int arr[],int len) {  int i=0;  printf("逆置数组->:\n");  for

用函数实现数组的初始化、逆置和清空

------------------------------------------------------------------------------------------------------ 函数,也叫"方法",每个函数可以看作不同的模块,可以用来实现不同的功能,什么地方需要实现这个功能,调用即可:大大提高了程序的复用性,节省人力和时间. -------------------------------------------------------------------

创建一个数组, 实现初始化数组、清空数组、完成数组元素的逆置。

#include <stdio.h> void init(int arr[],int len) { int i=0; int num=0; printf("初始化数组->:\n"); for(i=0;i<len;i++) { scanf("%d",&num); arr[i]=num; } } void empty(int arr[],int len) { int i=0; printf("清空数组->:\n"

【总结】逆置双向链表的三种方法

双向链表的遍历要比单向链表方便很多,所以逆置方法要比单链表丰富很多,因为可以从后向前遍历,所以可以像逆置数组一样进行操作,也可以根据单链表的特性进行逆置,也可以用双链表独有的特性进行逆置.具体方法如下: 链表的类定义如下: typedef int DataType; class DSNode { public: friend class DNSList; DSNode(DataType x=0) :_data(x), _next(NULL), _prev(NULL) { } private: D

求数组逆置(数组与指针实现)

数组逆置 ??基本思路: ??将a[0]与a[n-1]对换,再将a[1]与a[n-2]对换-直到将a[int(n-1)]与a[int((n-1)/2)-1]对换. ??如图所示: ??使用数组来实现: //数组实现逆置 void conver_arr(int c,int a[]) { int low =0; int high = c -1; for(int i =0; i < c/2; i++) { if(low < high) { int temp = a[c - i -1]; a[c -