09-排序1 排序(C)

这一节,测试各类排序算法的运行速度(没有基数排序(桶)

其实在实际学习中,还是有意义的

给定 n 个(长整型范围内的)整数,要求输出从小到大排序后的结果。

本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:

  • 数据1:只有1个元素;
  • 数据2:11个不相同的整数,测试基本正确性;
  • 数据3:10^{3}个随机整数;
  • 数据4:10^{4}个随机整数;
  • 数据5:10^{5}个随机整数;
  • 数据6:10^{5}个顺序整数;
  • 数据7:10^{5}个逆序整数;
  • 数据8:10^{5}个基本有序的整数;
  • 数据9:10^{5}个随机正整数,每个数字不超过1000。

    输入格式:

    输入第一行给出正整数 n(≤105),随后一行给出 n 个(长整型范围内的)整数,其间以空格分隔。

    输出格式:

    在一行中输出从小到大排序后的结果,数字间以 1 个空格分隔,行末不得有多余空格。

    输入样例:

    11
    4 981 10 -17 0 -20 29 50 8 43 -5
    

    输出样例:

    -20 -17 -5 0 4 8 10 29 43 50 981

 

 //冒泡排序

//冒泡排序
void Bubble_Sort(int *a, int Num)
{int Temp, i, j;int flag;for(i = 0; i < Num; i++){flag = 0;for(j = 0; j < Num - 1; j++){if(a[j] > a[j + 1]){Temp = a[j];a[j] = a[j+1];a[j+1] = Temp;flag = 1;}}if(!flag){break;}}	
}
测试点提示内存(KB)用时(ms)结果得分
03522

答案正确

1 / 1
13322

答案正确

10 / 10
23563

答案正确

2 / 2
3276192

答案正确

2 / 2
46883000

运行超时

0 / 2
5120017

答案正确

2 / 2
66643000

运行超时

0 / 2
71296432

答案正确

2 / 2
86683000

运行超时

0 / 2

插入排序

void Insert_Sort(int *a, int Num)
{int i, j;int Temp;for(i = 1; i < Num; i++){Temp = a[i];for(j = i; j > 0 && a[j-1] > Temp; j--){a[j] = a[j-1];}a[j] = Temp;}
}
测试点提示内存(KB)用时(ms)结果得分
03601

答案正确

1 / 1
11761

答案正确

10 / 10
23562

答案正确

2 / 2
342416

答案正确

2 / 2
411441254

答案正确

2 / 2
5120017

答案正确

2 / 2
611762493

答案正确

2 / 2
7120829

答案正确

2 / 2
810481260

答案正确

2 / 2

 希尔排序_普通版

void Shell_Sort(int *a, int Num)
{int D, P, i;int Temp;for(D = Num / 2; D > 0; D /= 2){for(P = D; P < Num; P++){Temp = a[P];for(i = P; i >= D && a[i - D] > Temp; i -= D){a[i] = a[i - D];}a[i] = Temp;}}
}
测试点提示内存(KB)用时(ms)结果得分
01762

答案正确

1 / 1
13082

答案正确

10 / 10
23362

答案正确

2 / 2
34124

答案正确

2 / 2
4113230

答案正确

2 / 2
5114421

答案正确

2 / 2
6133222

答案正确

2 / 2
7120422

答案正确

2 / 2
8107627

答案正确

2 / 2

  希尔排序_Hibbard版,就是将增量换成,由2^i 到 2^i-1;达到相邻元素互质,保证有效间隔。

Tworst= O( N^3/2) , Tavg = O ( N^5/4);

void Shell_Sort_Hibbard(int *a, int Num)
{int H, D, P, i;int Temp;int Hibbard[] = {131071, 65535, 32767, 16383, 8191, 4095, 2047, 1023, 511, 255, 127, 63, 31, 15, 7, 3, 1};for(H = 0; Hibbard[H] >= Num; H++);for(D = Hibbard[H]; D > 0; D = Hibbard[++H]){for(P = D; P < Num; P++){Temp = a[P];for(i = P; i >= D && a[i - D] > Temp; i -= D){a[i] = a[i - D];}a[i] = Temp;}}
}/*
num1[0] == 0
num1[1] == 1
num1[2] == 3
num1[3] == 7
num1[4] == 15
num1[5] == 31
num1[6] == 63
num1[7] == 127
num1[8] == 255
num1[9] == 511
num1[10] == 1023
num1[11] == 2047
num1[12] == 4095
num1[13] == 8191
num1[14] == 16383
num1[15] == 32767
num1[16] == 65535
num1[17] == 131071
num1[18] == 262143
num1[19] == 524287*/
测试点提示内存(KB)用时(ms)结果得分
01721

答案正确

1 / 1
13161

答案正确

10 / 10
21802

答案正确

2 / 2
34404

答案正确

2 / 2
4115230

答案正确

2 / 2
5120020

答案正确

2 / 2
6118020

答案正确

2 / 2
7114820

答案正确

2 / 2
8104827

答案正确

2 / 2

   希尔排序_Sedgewick版,这个增量很厉害,9 * 4^i - 9 * 2^i + 1,或 4^i -3 *2^i +1;

Tavg = O ( N^7/6 ),Tworst = O ( N^4/3)

void Shell_Sort_Sedgewick(int *a, int Num)
{int Si, D, P, i;int Temp;int Sedgewick[] = {146305, 64769, 36289, 16001, 8929, 3905, 2161, 929, 505, 209, 109, 41, 19, 5, 1, 0};for(Si = 0; Sedgewick[Si] >= Num; Si++);for(D = Sedgewick[Si]; D > 0; D = Sedgewick[++Si]){for(P = D; P < Num; P++){Temp = a[P];for(i = P; i >= D && a[i - D] > Temp; i -= D){a[i] = a[i - D];}a[i] = Temp;}}
}//有同学问,这一序列如何来的,其实是综合两个函数
// 具体的数学逻辑我也不懂
#include <stdio.h>
#include <math.h>int main()
{int i;double num1;double num2;for(i = 0; i < 10; i++){num1 = 9.0 * pow(4, i) - 9.0 * pow(2, i) + 1;printf("num1[%d] == %.lf\n", i, num1);}for(i = 0; i < 10; i++){num2 = pow(4, i) - 3.0 * pow(2, i) + 1;printf("num2[%d] == %.lf\n", i, num2);}	return 0;
}
/* 这是运行结果:
num1[0] == 1
num1[1] == 19
num1[2] == 109
num1[3] == 505
num1[4] == 2161
num1[5] == 8929
num1[6] == 36289
num1[7] == 146305
num1[8] == 587521
num1[9] == 2354689
num2[0] == -1
num2[1] == -1
num2[2] == 5
num2[3] == 41
num2[4] == 209
num2[5] == 929
num2[6] == 3905
num2[7] == 16001
num2[8] == 64769
num2[9] == 260609
很明显,Sedgewick函数便是如此构成的,
*/
测试点提示内存(KB)用时(ms)结果得分
01722

答案正确

1 / 1
13041

答案正确

10 / 10
23602

答案正确

2 / 2
34324

答案正确

2 / 2
4119628

答案正确

2 / 2
5124020

答案正确

2 / 2
6114820

答案正确

2 / 2
7120020

答案正确

2 / 2
8107225

答案正确

2 / 2

#include<stdio.h>
#include<stdlib.h>void Bubble_Sort(int *a, int Num); //冒泡排序
void Insert_Sort(int *a, int Num); //插入排序
void Shell_Sort(int *a, int Num); //希尔排序
void Shell_Sort_Hibbard(int *a, int Num); //希尔排序
void Shell_Sort_Sedgewick(int *a, int Num); //希尔排序
//void Selection_Sort(int *a, int Num);// 选择排序
//void Heap_Sort(); //堆排序
//void Merge_Sort(); //归并排序
//void Quick_Sort(); //快速排序
//void Table_Sort(); //表排序
//void Radix_Sort(); //基数排序, 桶排序int main()
{int Num, i;int *a;scanf("%d", &Num);a = (int *)malloc(sizeof(int) * Num);for(i = 0; i < Num; i++){scanf("%d", &a[i]);}
//	Bubble_Sort(a, Num);
//	Insert_Sort(a, Num);
//	Shell_Sort(a, Num);
//	Shell_Sort_Hibbard(a, Num);
//	Shell_Sort_Sedgewick(a, Num);Selection_Sort(a, Num);for(i = 0; i < Num - 1; i++){printf("%d ", a[i]);}printf("%d\n", a[i]);return 0;
}void Bubble_Sort(int *a, int Num)
{int Temp, i, j;int flag;for(i = 0; i < Num; i++){flag = 0;for(j = 0; j < Num - 1; j++){if(a[j] > a[j + 1]){Temp = a[j];a[j] = a[j+1];a[j+1] = Temp;flag = 1;}}if(!flag){break;}}	
}
void Insert_Sort(int *a, int Num)
{int i, j;int Temp;for(i = 1; i < Num; i++){Temp = a[i];for(j = i; j > 0 && a[j-1] > Temp; j--){a[j] = a[j-1];}a[j] = Temp;}
}void Shell_Sort(int *a, int Num)
{int D, P, i;int Temp;for(D = Num / 2; D > 0; D /= 2){for(P = D; P < Num; P++){Temp = a[P];for(i = P; i >= D && a[i - D] > Temp; i -= D){a[i] = a[i - D];}a[i] = Temp;}}
}
void Shell_Sort_Hibbard(int *a, int Num)
{int H, D, P, i;int Temp;int Hibbard[] = {131071, 65535, 32767, 16383, 8191, 4095, 2047, 1023, 511, 255, 127, 63, 31, 15, 7, 3, 1};for(H = 0; Hibbard[H] >= Num; H++);for(D = Hibbard[H]; D > 0; D = Hibbard[++H]){for(P = D; P < Num; P++){Temp = a[P];for(i = P; i >= D && a[i - D] > Temp; i -= D){a[i] = a[i - D];}a[i] = Temp;}}
}void Shell_Sort_Sedgewick(int *a, int Num)
{int Si, D, P, i;int Temp;int Sedgewick[] = {146305, 64769, 36289, 16001, 8929, 3905, 2161, 929, 505, 209, 109, 41, 19, 5, 1, 0};for(Si = 0; Sedgewick[Si] >= Num; Si++);for(D = Sedgewick[Si]; D > 0; D = Sedgewick[++Si]){for(P = D; P < Num; P++){Temp = a[P];for(i = P; i >= D && a[i - D] > Temp; i -= D){a[i] = a[i - D];}a[i] = Temp;}}
}
void Selection_Sort(int *a, int Num)
{int i,k, Min;int Temp, MinValue;for(k = 0; k < Num; k++){MinValue = 21000000;for(i = k; i < Num; i++){if(a[i] < MinValue){MinValue = a[i];Min = i;}}Temp = a[k];a[k] = a[Min];a[Min] = Temp;}
}
选择排序,依旧稳定发挥
void Selection_Sort(int *a, int Num)
{int i,k, Min;int Temp, MinValue;for(k = 0; k < Num; k++){MinValue = 21000000;for(i = k; i < Num; i++){if(a[i] < MinValue){MinValue = a[i];Min = i;}}Temp = a[k];a[k] = a[Min];a[Min] = Temp;}
}
测试点提示内存(KB)用时(ms)结果得分
03041

答案正确

1 / 1
13041

答案正确

10 / 10
23082

答案正确

2 / 2
332055

答案正确

2 / 2
46323000

运行超时

0 / 2
56083000

运行超时

0 / 2
65603000

运行超时

0 / 2
76963000

运行超时

0 / 2
85523000

运行超时

0 / 2

 堆排序_简单版

测试点提示内存(KB)用时(ms)结果得分
0只有一个元素1803000

运行超时

0 / 1
11721

答案正确

10 / 10
23562

答案正确

2 / 2
34324

答案正确

2 / 2
4118027

答案正确

2 / 2
5126423

答案正确

2 / 2
6120423

答案正确

2 / 2
7122022

答案正确

2 / 2
8102026

答案正确

2 / 2
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>typedef struct Heap *MinHeap;
struct Heap{int *data;int Size;
};
void Selection_Sort(int *a, int Num);// 选择排序
void Heap_Sort_Easy(int *a, int Num); //堆排序
void Swap(int *a, int *b);
MinHeap Creat_Heap(int *a, int N);
MinHeap Init_Heap(int N);
void Insert_Heap(MinHeap H, int data);
int Delete_Heap(MinHeap H);
bool IsEmpty(MinHeap H);int main()
{int Num, i;int *a;scanf("%d", &Num);a = (int *)malloc(sizeof(int) * Num);for(i = 0; i < Num; i++){scanf("%d", &a[i]);}
//	Selection_Sort(a, Num);Heap_Sort_Easy(a, Num);for(i = 0; i < Num - 1; i++){printf("%d ", a[i]);}printf("%d\n", a[i]);free(a);return 0;
}void Selection_Sort(int *a, int Num)
{int i,k, Min;int Temp, MinValue;for(k = 0; k < Num; k++){MinValue = 21000000;for(i = k; i < Num; i++){if(a[i] < MinValue){MinValue = a[i];Min = i;}}Swap(&a[k], &a[Min]);}
}
void Heap_Sort_Easy(int *a, int Num)
{MinHeap H;
//	if(Num == 1){
//		return ;
//	}H = Creat_Heap(a, Num);for(int i = 0; i < Num; i++){a[i] = Delete_Heap(H);}free(H ->data);free(H);
}
void Swap(int *a, int *b)
{int Temp;Temp = *a;*a = *b;*b = Temp;
}
MinHeap Creat_Heap(int *a, int N)
{MinHeap H;H = Init_Heap(N);for(int i = 0; i < N; i++){Insert_Heap(H, a[i]);}return H;
}
MinHeap Init_Heap(int N)
{MinHeap H;H = (MinHeap)malloc(sizeof(struct Heap));H ->data = (int*)malloc(sizeof(int) * (N + 1));H ->data[0] = -2100000;H ->Size = 0;return H;
}
void Insert_Heap(MinHeap H, int data)
{int i;i = ++H ->Size;for(; data < H ->data[i/2]; i /=2){H ->data[i] = H ->data[i/2];}H ->data[i] = data;
}
int Delete_Heap(MinHeap H)
{int Parent, Child, i;int Min, Temp;if(IsEmpty(H)){printf("Is error!\n");return H ->data[0];}Min = H ->data[1];Temp = H ->data[H ->Size --];for(Parent = 1; Parent * 2 <= H ->Size; Parent = Child){Child = Parent * 2;if(H ->data[Child] > H ->data[Child + 1]){Child++;}if(Temp <= H ->data[Child]){break;}else{H ->data[Parent] = H ->data[Child];}}H ->data[Parent] = Temp;return Min;
}
bool IsEmpty(MinHeap H)
{return (H ->Size == 0);
}

  堆排序_进阶版

测试点提示内存(KB)用时(ms)结果得分
01682

答案正确

1 / 1
13041

答案正确

10 / 10
23682

答案正确

2 / 2
34324

答案正确

2 / 2
4118828

答案正确

2 / 2
5127223

答案正确

2 / 2
6127623

答案正确

2 / 2
7115222

答案正确

2 / 2
894426

答案正确

2 / 2
#include<stdio.h>
#include<stdlib.h>void Heap_Sort_Good(int *a, int Num); //堆排序
void Swap(int *a, int *b);
void PercDown(int *a, int index, int Num);int main()
{int Num, i;int *a;scanf("%d", &Num);a = (int *)malloc(sizeof(int) * Num);for(i = 0; i < Num; i++){scanf("%d", &a[i]);}Heap_Sort_Good(a, Num);for(i = 0; i < Num - 1; i++){printf("%d ", a[i]);}printf("%d\n", a[i]);return 0;
}void Heap_Sort_Good(int *a, int Num)
{int i, j;for(i = Num / 2 - 1; i >= 0;i--){PercDown(a, i, Num);}for(i = Num - 1; i > 0; i--){Swap(&a[0], &a[i]);PercDown(a, 0, i);}
}
void PercDown(int *a, int index, int Num)
{int Parent, Child;int Value;Value = a[index];for(Parent = index; (Parent * 2 + 1) < Num; Parent = Child){Child  = Parent * 2 + 1;if((Child != Num - 1) && a[Child] < a[Child + 1]){Child++;}if(Value >= a[Child]){break;}else{a[Parent] = a[Child];}}a[Parent] = Value;
}void Swap(int *a, int *b)
{int Temp;Temp = *a;*a = *b;*b = Temp;
}

 归并排序递归版

测试点提示内存(KB)用时(ms)结果得分
03642

答案正确

1 / 1
13362

答案正确

10 / 10
23682

答案正确

2 / 2
34645

答案正确

2 / 2
4117628

答案正确

2 / 2
5129221

答案正确

2 / 2
6118424

答案正确

2 / 2
7126421

答案正确

2 / 2
8106425

答案正确

2 / 2
#include<stdio.h>
#include<stdlib.h>//归并排序
void Merge_Sort(int *a, int Num);
void Msort(int *a, int *t, int LeftStart, int RightEnd);
void Merge(int *a, int *t, int LeftStart, int RightStart, int RightEnd);int main()
{int Num, i;int *a;scanf("%d", &Num);a = (int *)malloc(sizeof(int) * Num);for(i = 0; i < Num; i++){scanf("%d", &a[i]);}Merge_Sort(a, Num);for(i = 0; i < Num - 1; i++){printf("%d ", a[i]);}printf("%d\n", a[i]);return 0;
}void Merge_Sort(int *a, int Num)
{int *t;t = (int *)malloc(sizeof(int) * Num);if(t != NULL){Msort(a, t, 0, Num - 1);free(t);}
}
void Msort(int *a, int *t, int LeftStart, int RightEnd)
{int center;if(LeftStart < RightEnd){center = ((LeftStart + RightEnd) / 2);Msort(a, t, LeftStart, center);Msort(a, t, center + 1, RightEnd);Merge(a, t, LeftStart, center + 1, RightEnd);}
}
void Merge(int *a, int *t, int LeftStart, int RightStart, int RightEnd)
{int LeftEnd, Nums;int Temp;LeftEnd = RightStart - 1;Temp = LeftStart;Nums = RightEnd - LeftStart + 1;while((LeftStart <= LeftEnd) && (RightStart <= RightEnd)){if(a[LeftStart] <= a[RightStart]){t[Temp++] = a[LeftStart++];}else{t[Temp++] = a[RightStart++];}}while(LeftStart <= LeftEnd){t[Temp++] = a[LeftStart++];}while(RightStart <= RightEnd){t[Temp++] = a[RightStart++];}for(int i = 0; i < Nums; i++, RightEnd--){a[RightEnd] = t[RightEnd];}
}

  归并排序-非递归版

测试点提示内存(KB)用时(ms)结果得分
01762

答案正确

1 / 1
11802

答案正确

10 / 10
23562

答案正确

2 / 2
34325

答案正确

2 / 2
4130026

答案正确

2 / 2
5129620

答案正确

2 / 2
6114820

答案正确

2 / 2
7113619

答案正确

2 / 2
8106424

答案正确

2 / 2
#include<stdio.h>
#include<stdlib.h>//归并排序
void Merge_Sort(int *a, int Num);
void Msort(int *a, int *t, int Num, int Length);
void Merge(int *a, int *t, int LeftStart, int RightStart, int RightEnd);int main()
{int Num, i;int *a;scanf("%d", &Num);a = (int *)malloc(sizeof(int) * Num);for(i = 0; i < Num; i++){scanf("%d", &a[i]);}Merge_Sort(a, Num);for(i = 0; i < Num - 1; i++){printf("%d ", a[i]);}printf("%d\n", a[i]);return 0;
}void Merge_Sort(int *a, int Num)
{int *t;int Length = 1;t = (int *)malloc(sizeof(int) * Num);if(t != NULL){while(Length < Num){Msort(a, t, Num, Length);Length *= 2;Msort(t, a, Num, Length);Length *= 2;}free(t);}
}
void Msort(int *a, int *t, int Num, int Length)
{int i, j;for(i = 0; i <= (Num - 2 * Length); i += 2 * Length){Merge(a, t, i, i + Length, (i + 2 * Length) - 1);}if(i + Length < Num){Merge(a, t, i, i + Length, Num - 1);}else{for(j = i; j < Num; j++){t[j] = a[j];}}
}
void Merge(int *a, int *t, int LeftStart, int RightStart, int RightEnd)
{int LeftEnd, Nums;int Temp;LeftEnd = RightStart - 1;Temp = LeftStart;Nums = RightEnd - LeftStart + 1;while((LeftStart <= LeftEnd) && (RightStart <= RightEnd)){if(a[LeftStart] <= a[RightStart]){t[Temp++] = a[LeftStart++];}else{t[Temp++] = a[RightStart++];}}while(LeftStart <= LeftEnd){t[Temp++] = a[LeftStart++];}while(RightStart <= RightEnd){t[Temp++] = a[RightStart++];}
}

 快速排序_自定义版

测试点提示内存(KB)用时(ms)结果得分
03602

答案正确

1 / 1
13562

答案正确

10 / 10
22722

答案正确

2 / 2
33445

答案正确

2 / 2
4114431

答案正确

2 / 2
5120818

答案正确

2 / 2
6129219

答案正确

2 / 2
7120419

答案正确

2 / 2
894428

答案正确

2 / 2
#include<stdio.h>
#include<stdlib.h>//归并排序void Swap(int *a, int *b);
int Median3(int *a, int Left, int Right);
void Qsort(int *a, int Left, int Right);
void Quick_Sort(int *a, int Num);
void Insert_Sort(int *a, int Num);int main()
{int Num, i;int *a;scanf("%d", &Num);a = (int *)malloc(sizeof(int) * Num);for(i = 0; i < Num; i++){scanf("%d", &a[i]);}Quick_Sort(a, Num);for(i = 0; i < Num - 1; i++){printf("%d ", a[i]);}printf("%d\n", a[i]);return 0;
}
int Median3(int *a, int Left, int Right)
{int Center = (Left + Right)/2;if(a[Left] > a[Center]){Swap(&a[Left], &a[Center]);}if(a[Left] > a[Right]){Swap(&a[Left], &a[Right]);}if(a[Center] > a[Right]){Swap(&a[Center], &a[Right]);}Swap(&a[Center], &a[Right - 1]);return a[Right - 1];
}
void Qsort(int *a, int Left, int Right)
{int Pivot, Cutoff, i, j; Cutoff = 1000;if(Cutoff < Right - Left){Pivot = Median3(a, Left, Right);i = Left; j = Right-1;while(1){while(a[++i] < Pivot);while(a[--j] > Pivot);if(i < j){Swap(&a[i], &a[j]);}else{break;}}Swap(&a[i], &a[Right - 1]);Qsort(a, Left, i - 1);Qsort(a, i + 1, Right);}else{Insert_Sort(a + Left, Right - Left + 1);}
}
void Quick_Sort(int *a, int Num)
{Qsort(a, 0, Num - 1);
}
void Swap(int *a, int *b)
{int Temp;Temp = *a;*a = *b;*b = Temp;
}
void Insert_Sort(int *a, int Num)
{int i, j;int Temp;for(i = 1; i < Num; i++){Temp = a[i];for(j = i; j > 0 && a[j-1] > Temp; j--){a[j] = a[j-1];}a[j] = Temp;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/422587.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows与Linux下 SDL2的第一个窗口程序

Windows效果和Linux效果如下&#xff1a; 下面是代码&#xff1a; #include <stdio.h> #include "SDL.h"int main(int argc, char* argv[]) { // 初始化SDL视频子系统if (SDL_Init(SDL_INIT_VIDEO) ! 0){// 如果初始化失败&#xff0c;打印错误信息printf(&…

proteus+51单片机+实验(LCD1620、定时器)

目录 1.LCD1602液晶显示屏 1.1基本概念 1.1.1LCD的简介 1.1.2LCD的显示原理 ​​​1.1.3LCD的硬件电路 1.1.4LCD的常见指令 1.1.5LCD的时序 ​​​​​​​1.2代码 1.2.1写命令和写数据操作 1.2.2初始化和测试代码 1. 3.3功能函数 1.3proteus代码 1.3.1器件代码 1.…

探索Python世界的隐藏宝石:Pika库的神秘力量

文章目录 探索Python世界的隐藏宝石&#xff1a;Pika库的神秘力量背景&#xff1a;为何选择Pika&#xff1f;Pik库简介如何安装Pika&#xff1f;简单库函数使用方法场景应用常见Bug及解决方案总结 探索Python世界的隐藏宝石&#xff1a;Pika库的神秘力量 背景&#xff1a;为何…

ELK预警方案:API+XXLJob

目录 步骤一&#xff1a;出一个接口&#xff0c;接口内查询出10分钟内是否有异常信息 步骤二&#xff1a;XXLJob中设置预警的频率 步骤三&#xff1a;在重要的业务处输出指定格式日志即可 步骤一&#xff1a;出一个接口&#xff0c;接口内查询出10分钟内是否有异常信息 {&qu…

Java | Leetcode Java题解之第402题移掉K位数字

题目&#xff1a; 题解&#xff1a; class Solution {public String removeKdigits(String num, int k) {Deque<Character> deque new LinkedList<Character>();int length num.length();for (int i 0; i < length; i) {char digit num.charAt(i);while (!…

C语言字符函数和字符串函数(20)

文章目录 前言一、字符分类函数小练习 二、字符转换函数三、strlen的使用和模拟实现四、strcpy的使用和模拟实现五、strcat的使用和模拟实现六、strcmp的使用和模拟实现七、strncpy函数的使用八、strncat函数的使用九、strncmp函数的使用十、strstr函数的使用和模拟实现十一、s…

OpenGL3.3_C++_Windows(37)

调试&#xff1a; 视觉错误与CPU调试不同&#xff0c;在GLSL代码中也不能设置断点&#xff0c;出现错误的时候寻找错误的源头可能会非常困难。 glGetError&#xff08;&#xff09; GLenum glGetError();返回整形数字&#xff0c;查询错误标记&#xff0c;但是当一个错误标记…

C#开发基础之使用四种流行的数据库访问技术ADO.NET、Dapper、EF Core 和 SqlSugar 连接 SQL Server

前言 在这篇文章中&#xff0c;我们将介绍四种流行的数据库访问技术&#xff1a;ADO.NET、Dapper、Entity Framework Core (EF Core) 和 SqlSugar。每种技术都提供了与 SQL Server 进行交互的不同方法&#xff0c;我们将以 TestDB 数据库中的 User 表为例&#xff0c;展示如何…

关于malloc/free的一些知识点

序 关于malloc/free&#xff0c;我们都不陌生&#xff0c;在最开始学习c语言时就相当了解&#xff0c;包括c中的new也是封装的malloc。下边我以glibc实现的malloc来讲述一些关于malloc/free的知识点。 malloc/free malloc和free并不是系统调用&#xff0c;而是运行时库&…

C语言的结构体类型

在我们使用C语言进行编写代码时&#xff0c;常常会使用已经给定的类型来创建变量&#xff0c;比如int型&#xff0c;char型&#xff0c;double型等&#xff0c;而当我们想创建一些较为复杂的东西时&#xff0c;单单用一个类型变量是没办法做到的&#xff0c;比如我们想创建一个…

shader 案例学习笔记之fract函数

fract函数 可以理解为模1取余&#xff0c;获取一个数的小数部分&#xff0c;如果参数是向量&#xff0c;那就是获取每个向量分量上的小数 案例一 #ifdef GL_ES precision mediump float; #endif// 渲染分辨率 uniform vec2 u_resolution; // 程序运行时间 uniform float u_ti…

如何利用 Smarter Balanced 塑造教育领域的 AI 治理

目录 定义挑战 以人为本的设计引领 融入多样性 探索以学生为中心的价值观 探索效果的层次和不同的影响 部位于加利福尼亚州的Smarter Balanced Assessment Consortium 是一个由会员主导的公共组织&#xff0c;为 K-12 和高等教育领域的教育工作者提供评估系统。该组织成立…

初学者指南:MyBatis 入门教程

主要介绍了Mybatis的基本使用、JDBC、数据库连接池、lombok注解&#xff01; 文章目录 前言 什么是Mybatis? 快速入门 使用Mybatis查询所有的用户信息 配置SQL提示 JDBC介绍 Mybatis 数据库连接池 lombok 总结 前言 主要介绍了Mybatis的基本使用、JDBC、数据库连接…

基于stm32单片机使用 RT-Thread 系统的 ADC 外设

一、ADC 介绍 来源&#xff1a;RT-Thread 文档中心   ADC(Analog-to-Digital Converter) 指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。真实世界的模拟信号&#xff0c;例如温度、压力、声音或者图像等&#xff0c;需要转换成更容易储存、处理和发射…

【Linux】:信号与信号产生

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家带来信号和信号的产生相关代码和知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到…

YOLOv10优改系列一:YOLOv10融合C2f_Ghost网络,让YoloV10实现性能的均衡

&#x1f4a5; &#x1f4a5;&#x1f4a5; &#x1f4a5;&#x1f4a5; &#x1f4a5;&#x1f4a5; &#x1f4a5;&#x1f4a5;神经网络专栏改进完整目录&#xff1a;点击 &#x1f497; 只需订阅一个专栏即可享用所有网络改进内容&#xff0c;每周定时更新 文章内容&#x…

微信自动通过好友和自动拉人进群,微加机器人这个功能太好用了

又发现一个好用的功能&#xff0c;之前就想找一个这种工具&#xff0c;现在发现可以利用微加机器人的两个功能来实现&#xff0c;分别是加好友和关键词拉群 首先 微加机器人的专业版 > 功能 > 加好友设置 可以设置一个关键词通过,这样别人加好友的时候只需要输入制定内…

实战案例(5)防火墙通过跨三层MAC识别功能控制三层核心下面的终端

如果网关是在核心设备上面&#xff0c;还能用MAC地址进行控制吗&#xff1f; 办公区域的网段都在三层上面&#xff0c;防火墙还能基于MAC来控制吗&#xff1f; 采用正常配置模式的步骤与思路 &#xff08;1&#xff09;配置思路与上面一样 &#xff08;2&#xff09;与上面区…

通信工程学习:什么是PDF策略决策功能

PDF策略决策功能 PDF策略决策功能&#xff08;Policy Decision Function, PDF&#xff09;在通信网络中&#xff0c;特别是在IP多媒体子系统&#xff08;IMS&#xff09;中&#xff0c;扮演着至关重要的角色。以下是对PDF策略决策功能的详细解释&#xff1a; 一、定义与功能概…

CentOS Stream 8中安装和使用 Docker

docker安装包-CSDN博客 〇、常用的docker命令 docker的作用&#xff1a; 快速进行软件的安装&#xff0c;便于软件环境的维护 docker的镜像: 压缩了指定软件的安装包的文件。使用镜像文件创建容器 docker的容器: 容器可以理解为就是一台小电脑。安装的linux系统&am…