获取多个数据
运用for循环
#include <stdio.h>
int main(){
int arr[4];
int newArr[4];
for(int i = 0; i < 4; i++){
printf("请输入第%d个整数:", i+1);
scanf("%d", &arr[i]);
}
for(int i = 0; i < 4; i++){
newArr[i] = arr[3-i];
}
for(int i = 0; i < 4; i++){
printf("%d ", newArr[i]);
}
return 0;
}
元素交换
#include<stdio.h>
void swap(int arr[],int m,int n)
{
int temp=arr[m];
arr[m]=arr[n];
arr[n]=temp;
}
int main(){
int arr[10]={1,2,3,4,5,6,7,8,9,10};
swap(arr,2,4);
for(int i=0;i<10;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
洗牌(打乱顺序)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void swap(int arr[],int m,int n)
{
int a=arr[m];
arr[m]=arr[n];
arr[n]=a;
}
int main(){
int arr[10]={1,2,3,4,5,6,7,8,9,10};
srand(time(NULL));
for(int i=0;i<20;i++)
{
int m=rand()%10;
int n=rand()%10;
swap(arr,m,n);
}
for(int i=0;i<10;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
冒泡排序
优先解决最大值,从大到小
#include<stdio.h>
void swap(int arr[],int m,int n)
{
int temp=arr[m];
arr[m]=arr[n];
arr[n]=temp;
}
void sort(int arr[],int len){
for(int i=0;i<len-1;i++){
for(int j=0;j<len-i-1;j++)
{
if(arr[j]>arr[j+1]){
swap(arr,j,j+1);
}
}
}
}
int main(){
int arr[10]={10,3,2,5,7,2,9,2,1,8};
int len=sizeof(arr)/sizeof(arr[0]);
sort(arr,len);
for(int i=0;i<10;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
正常会将len个循环跑完,会有浪费的状况 算法优化:可以提前结束代码,减少消耗的算力
#include <stdio.h>
void swap(int arr[], int m, int n)
{
int temp = arr[m];
arr[m] = arr[n];
arr[n] = temp;
}
void sort(int arr[], int len)
{
for (int i = 0; i < len - 1; i++)
{
int flag = 1;
for (int j = 0; j < len - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
swap(arr, j, j + 1);
flag = 0;
}
}
if (flag == 1)
{
break;
}
}
}
int main()
{
int arr[10] = {10, 3, 2, 5, 7, 2, 9, 2, 1, 8};
int len = sizeof(arr) / sizeof(arr[0]);
sort(arr, len);
for (int i = 0; i <=len-1; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
选择排序
优先确保最小值,从小到大 1.
#include <stdio.h>
void swap(int arr[], int m, int n)
{
int temp = arr[m];
arr[m] = arr[n];
arr[n] = temp;
}
void sort_select(int arr[], int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = i+1; j < len; j++)
{
if (arr[i] > arr[j])
{
swap(arr, i, j);
}
}
}
}
int main()
{
int arr[10] = {10, 3, 2, 5, 7, 2, 9, 2, 1, 8};
int len = sizeof(arr) / sizeof(arr[0]);
sort_select(arr, len);
for (int i = 0; i <= len - 1; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
#include <stdio.h>
void swap(int arr[], int m, int n)
{
int temp = arr[m];
arr[m] = arr[n];
arr[n] = temp;
}
void sort_select(int arr[], int len)
{
for (int i = 0; i < len - 1; i++)
{
int k=i;
for (int j = i+1; j < len; j++)
{
if (arr[k] > arr[j])
{
k = j;
}
}
if(k!=i)
{
swap(arr, i, k);
}
}
}
int main()
{
int arr[10] = {10, 3, 2, 5, 7, 2, 9, 2, 1, 8};
int len = sizeof(arr) / sizeof(arr[0]);
sort_select(arr, len);
for (int i = 0; i <= len - 1; i++)
{
printf("%d ", arr[i]);
}
return 0;
}