数组是用于储存多个相同类型数据的集合。
数组初始化
int a1[4]={1,2,3,4,5};
int a2[3];
a1[0]=1;
a1[1]=2;
a1[2]=3;
a1[3]=4;
循环输入输出
int a[5];
for(int i=0;i<5;i++){ //循环输入
printf("请输入第%d个数据:");
scanf("%d",&a[i]);
}
for(int i=0;i<5;i++){ //循环输出
printf("%d ",a[i]);
}
数组的排序和查找
//二分查找
int fun(int a[],int low,int high,int mid,int key) {
while(low<high) {
mid=(low+high)/2;
if(a[mid]<key) {
low=mid+1;
} else if(a[mid]>key) {
high=mid-1;
} else {
printf("查找成功!下标为:%d",mid);
return 0;
}
}
printf("不存在!");
return -1;
}
int main() {
int a[5];
for(int i=0; i<5; i++) {
scanf("%d",&a[i]);
}
int high=4,low=0;
int mid=(low+high)/2,key;
printf("请输入查找数字:");
scanf("%d",&key);
fun(a,low,high,mid,key);
}
//冒泡排序
int bubbleSort(int arr[],int len){
int i,j,t;
for(i=0;i<len-1;i++){
for(j=0;j<len-i-1;j++){
if(arr[j]<arr[j+1]){
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
for(i=0;i<10;i++){
printf("%d ",arr[i]);
}
}
int main(){
int arr[10],i,len=10;
for(i=0;i<10;i++){
scanf("%d",&arr[i]);
}
bubbleSort(arr,len);
}
//选择排序
int selectSort(int arr[],int len){
int i,j,t,min;
for(i=0;i<len;i++){
min=i;
for(j=i+1;j<len;j++){
if(arr[j]<arr[min]){
min=j;
}
}
if(min!=i){
t=arr[i];
arr[i]=arr[min];
arr[min]=t;
}
}
for(i=0;i<10;i++){
printf("%d ",arr[i]);
}
}
int main(){
int arr[10],i,len=10;
for(i=0;i<10;i++){
scanf("%d",&arr[i]);
}
selectSort(arr,len);
}
//直接插入排序
int InsertSort(int arr[],int len){
int i,j,t;
for(i=1;i<len;i++){
t=arr[i];
for(j=i-1;j>=0&&arr[j]<t;j--){
arr[j+1]=arr[j];
}
arr[j+1]=t;
}
for(i=0;i<10;i++){
printf("%d ",arr[i]);
}
}
int main(){
int arr[10],i,len=10;
for(i=0;i<10;i++){
scanf("%d",&arr[i]);
}
InsertSort(arr,len);
}
typedef struct Linked_Node{
int value;
struct Linked_Node *next;
}Node;
int main(){
Node *head= (Node *)malloc(sizeof(Node));
if(!head){
printf("内存申请失败\n");
return 0;
}
head->value=1;
Node *q=head;
for(int i=2;i<=10;i++){
Node *p=(Node *)malloc(sizeof(Node));
p->value=i;
q->next=p;
q=q->next;
}
q->next=NULL;
q=head;
while(q){
printf("%d ",q->value);
q=q->next;
}
}
//快速排序
int fun(int a[],int tou,int wei) {
int t=a[tou];
while(tou<wei) {
while(tou<wei&&a[wei]>t) {
wei--;
}
a[tou]=a[wei];
while(tou<wei&&a[tou]<=t) {
tou++;
}
a[wei]=a[tou];
}
a[tou]=t;
return tou;
}
int fun1(int a[],int tou,int wei) {
if(tou<wei){
int d=fun(a,tou,wei);
fun1(a,tou,d-1);
fun1(a,d+1,wei);
}
}
int main() {
int a[10],i,tou=0,wei=9;
for(i=0; i<10; i++) {
scanf("%d",&a[i]);
}
fun1(a,tou,wei);
for(i=0; i<10; i++) {
printf("%d ",a[i]);
}
}
//希尔排序
int fun(int a[]) {
int i,j,d,del[3]= {5,2,1},l,t;
for(l=0; l<3; l++) {
d=del[l];
for(i=d; i<10; i++) {
t=a[i];
if(a[i]<a[i-d]) {
for(j=i-d; j>=0&&a[j]>t; j-=d) {
a[j+d]=a[j];
}
a[j+d]=t;
}
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
}
int main() {
int a[10],i;
for(i=0; i<10; i++) {
scanf("%d",&a[i]);
}
fun(a);
}