add
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
#include<stdio.h>
|
||||
void Search(int a[],int n,int x,int*i,int*j){
|
||||
int start=0,end=n-1;
|
||||
*i=-1;
|
||||
*j=-1;
|
||||
while(start<end){
|
||||
int mid=start+(end-start)/2;
|
||||
if(a[mid]==x){
|
||||
*i=mid;
|
||||
*j=mid;
|
||||
}
|
||||
else if(a[mid]<x){
|
||||
start=mid+1;
|
||||
*i=mid;
|
||||
}
|
||||
else {
|
||||
end=mid-1;
|
||||
*j=mid;
|
||||
}
|
||||
}
|
||||
}
|
||||
int main(){
|
||||
int a[]={2,4,6,8,9,10,12,13};
|
||||
int x=8;
|
||||
int n=sizeof(a)/sizeof(a[0]);
|
||||
int i,j;
|
||||
Search(a,n,x,&i,&j);
|
||||
if(i==-1&&j==-1){
|
||||
printf("未找到%d的信息\n",x);
|
||||
}
|
||||
else if(i==j){
|
||||
printf("目标元素%d位于%d\n",x,i);
|
||||
}
|
||||
else{
|
||||
printf("未找到目标元素%d的值\n",x);
|
||||
printf("小于%d的最大元素位置%d\n",x,i);
|
||||
printf("大于%d的最小元素位置%d\n",x,j);
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,49 @@
|
||||
#include<stdio.h>
|
||||
|
||||
void Search(int a[], int n, int x, int *i, int *j) {
|
||||
int start = 0, end = n - 1;
|
||||
*i = -1;
|
||||
*j = -1;
|
||||
|
||||
while (start <= end) {
|
||||
int mid = start + (end - start) / 2;
|
||||
|
||||
if (a[mid] == x) {
|
||||
*i = mid; // 找到目标元素
|
||||
*j = mid; // 初始化 *j
|
||||
// 向左查找相同元素
|
||||
while (*i > 0 && a[*i - 1] == x) {
|
||||
(*i)--;
|
||||
}
|
||||
// 向右查找相同元素
|
||||
while (*j < n - 1 && a[*j + 1] == x) {
|
||||
(*j)++;
|
||||
}
|
||||
return;
|
||||
} else if (a[mid] < x) {
|
||||
start = mid + 1;
|
||||
*i = mid; // 可能是小于 x 的最大元素
|
||||
} else {
|
||||
end = mid - 1;
|
||||
*j = mid; // 可能是大于 x 的最小元素
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int a[] = {2, 4, 6, 8, 9, 10, 12, 13};
|
||||
int x = 7;
|
||||
int n = sizeof(a) / sizeof(a[0]);
|
||||
int i, j;
|
||||
|
||||
Search(a, n, x, &i, &j);
|
||||
if (i == -1 && j == -1) {
|
||||
printf("未找到%d的信息\n", x);
|
||||
} else if (i == j) {
|
||||
printf("目标元素%d位于%d\n", x, i);
|
||||
} else {
|
||||
printf("未找到目标元素%d的值\n", x);
|
||||
printf("小于%d的最大元素位置%d\n", x, i);
|
||||
printf("大于%d的最小元素位置%d\n", x, j);
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,61 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int bijiao(const void* a, const void* b) {
|
||||
return (*(int*)a - *(int*)b);
|
||||
}
|
||||
|
||||
int used[100];
|
||||
|
||||
void dayi(int *arr, int n) {
|
||||
for (int i = 0; i < n; i++) {
|
||||
printf("%d ", arr[i]); // 添加空格以便于阅读
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void pailie(int *arr, int start, int end) {
|
||||
if (start == end) {
|
||||
dayi(arr, end + 1);
|
||||
} else {
|
||||
for (int i = start; i <= end; i++) {
|
||||
// 检查当前元素是否已经使用
|
||||
if (!used[i]) {
|
||||
// 检查前一个元素是否相同且未被使用
|
||||
if (i > start && arr[i] == arr[i - 1] && !used[i - 1]) {
|
||||
continue; // 跳过重复元素
|
||||
}
|
||||
|
||||
used[i] = 1;
|
||||
// 交换元素
|
||||
int t = arr[start];
|
||||
arr[start] = arr[i];
|
||||
arr[i] = t;
|
||||
|
||||
pailie(arr, start + 1, end);
|
||||
|
||||
// 交换回去
|
||||
t = arr[start];
|
||||
arr[start] = arr[i];
|
||||
arr[i] = t;
|
||||
used[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int arr[] = {1, 2, 3, 4, 3, 6};
|
||||
int size = sizeof(arr) / sizeof(arr[0]);
|
||||
|
||||
// 排序以方便后续去重
|
||||
qsort(arr, size, sizeof(int), bijiao);
|
||||
|
||||
// 初始化使用标记数组
|
||||
for (int i = 0; i < size; i++) {
|
||||
used[i] = 0;
|
||||
}
|
||||
|
||||
pailie(arr, 0, size - 1);
|
||||
return 0;
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,42 @@
|
||||
|
||||
#include"stdio.h"
|
||||
#include"stdlib.h"
|
||||
int bijiao(const void* a, const void*b){
|
||||
return (*(int*)a-*(int*)b);
|
||||
}
|
||||
int used[100];
|
||||
void dayi(int *arr,int n){
|
||||
for(int i=0;i<n;i++){
|
||||
printf("%d",arr[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
void pailie(int *arr,int start,int end){
|
||||
if(start==end){
|
||||
dayi(arr,end+1);
|
||||
}
|
||||
else{
|
||||
for(int i=start;i<=end;i++){
|
||||
if(!used[i]){
|
||||
used[i]=1;
|
||||
int t=arr[start];
|
||||
arr[start]=arr[i];
|
||||
arr[i]=t;
|
||||
pailie(arr,start+1,end);
|
||||
t=arr[start];
|
||||
arr[start]=arr[i];
|
||||
arr[i]=t;
|
||||
used[i]=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
int main(){
|
||||
int arr[]={1,2,3,4,3,6};
|
||||
int size=sizeof(arr)/sizeof(arr[0]);
|
||||
qsort(arr,size,sizeof(int),bijiao);
|
||||
for(int i=0;i<size;i++){
|
||||
used[i]=0;
|
||||
}
|
||||
pailie(arr,0,size-1);
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,42 @@
|
||||
|
||||
#include"stdio.h"
|
||||
#include"stdlib.h"
|
||||
int bijiao(const void* a, const void*b){
|
||||
return (*(int*)a-*(int*)b);
|
||||
}
|
||||
int used[100];
|
||||
void dayi(int *arr,int n){
|
||||
for(int i=0;i<n;i++){
|
||||
printf("%d",arr[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
void pailie(int *arr,int start,int end){
|
||||
if(start==end){
|
||||
dayi(arr,end+1);
|
||||
}
|
||||
else{
|
||||
for(int i=start;i<=end;i++){
|
||||
if(!used[i]){
|
||||
used[i]=1;
|
||||
int t=arr[start];
|
||||
arr[start]=arr[i];
|
||||
arr[i]=t;
|
||||
pailie(arr,start+1,end);
|
||||
t=arr[start];
|
||||
arr[start]=arr[i];
|
||||
arr[i]=t;
|
||||
used[i]=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
int main(){
|
||||
int arr[]={1,2,3,4,3,6};
|
||||
int size=sizeof(arr)/sizeof(arr[0]);
|
||||
qsort(arr,size,sizeof(int),bijiao);
|
||||
for(int i=0;i<size;i++){
|
||||
used[i]=0;
|
||||
}
|
||||
pailie(arr,0,size-1);
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,22 @@
|
||||
#include "stdio.h"
|
||||
|
||||
int findMax(int arr[], int a, int size) {
|
||||
if (size == 1) {
|
||||
return arr[a]; // 返回当前元素值
|
||||
}
|
||||
|
||||
int maxOfRest = findMax(arr, a + 1, size - 1); // 递归调用
|
||||
if (arr[a] > maxOfRest) {
|
||||
return arr[a]; // 返回当前元素值
|
||||
} else {
|
||||
return maxOfRest; // 返回剩余部分的最大值
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int arr[] = {8, 1, 5, 9};
|
||||
int size = sizeof(arr) / sizeof(arr[0]);
|
||||
int Max = findMax(arr, 0, size); // 获取最大值
|
||||
printf("最大元素是:%d\n", Max);
|
||||
return 0;
|
||||
}
|
||||
Binary file not shown.
Reference in New Issue
Block a user