ios学习笔记--(c基础题3)

// test1();//随即数组10个数(20-30)计算找出最大值和所有元素的和
// test2();//生成20个元素的数组 每个元素的取值范围在(30-70)之间求数组元素的和
//test3();//复制一个数组到另外一个数组里面
//test5();//随机生成(20-40)两个数组 相加放到另外一个数组里面
//test6();//选择排序
//test7();//快速排序

//
//  main.m
//  c 31 test
//
//  Created by dq on 15/7/17.
//  Copyright (c) 2015年 dq. All rights reserved.
//

#import <Foundation/Foundation.h>
#define N 10
void test1()
{
      int a[9],max=0,sum=0;
    for (int i=0; i<10; i++) {

        a[i]=arc4random()%21+10;
        if(a[i]>max)
        {
            max=a[i];
        }
        sum +=a[i];
    }
    printf("最大值%d总和%d",max,sum);
}
void test2()
{
    int a[19],sum;
    for (int i=0; i<9; i++) {
        a[i]=arc4random()%31+40;
        sum +=a[i];
    }
    printf("%d",sum);
}
void test3()
{
    int a[N],b[N]={1,2,3,4,5,6,7,8,9,0};
    for (int i=0; i<N; i++) {
        a[i]=b[i];
    }
    for (int i=0; i<N; i++) {
        printf("%d ",a[i]);
    }

}
void test4()
{
    int a[N],b[N],c[N];
    for (int i=0; i<N; i++) {
        a[i]=arc4random()%21+20;
        b[i]=arc4random()%21+20;
        c[i]=a[i]+b[i];
    }
    for (int i=0; i<N; i++) {
        printf("%d ",c[i]);
    }
}
void test5()// x选择排序
{
    int a[N]={0,12,36,52,91,56,87,36,92,81};
    for (int i=0; i<N; i++) {
        for (int j = i+1; j<N; j++) {
            if(a[i]>a[j])
            {

                int temp = a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    for (int i=0; i<N; i++) {
        printf("%d ",a[i]);
    }
}
void test6()
{
    int count=0;
    char a[]="i love ios,i want an ip5";
    for (int i=0; i<strlen(a); i++) {
        if(a[i]==' ')
        {
            count++;
        }


    }
    printf("%d",count);
}
void test7()
{
char a[]="abcdef",b[N];
    for (int i=0; i<strlen(a); i++) {
        b[i]=a[strlen(a)-i-1];//这边因为数组是从0开始 所以最大要-1
    }
    printf("%s",b);
}
void InsertSort()
{
    int a[N]={10,9,8,7,6,5,4,3,2,1};
    for (int i=0; i<N-1;i++) {
        if(a[i]>a[i+1])
        {
            int x =a[i+1];
            int j=i;
            //a[i+1]=a[i];
            while (a[j]>x&&j>=0) {
                a[j+1]=a[j];
                j--;
            }
            a[j+1]=x;//最后哨位的值应该赋给 a[j+1]

        }
    }
    for (int i=0; i<N; i++) {
        printf("%d ",a[i]);
    }

}
void swap(int *a,int *b)
{
    int temp =*a;
    *a=*b;
    *b=temp;
}
int spolit(int a[],int low,int high)
{
    int base=a[low];
    while (low<high) {
        while (low<high&&a[high]>=base) {//相等的情况要注意
            high--;
        }
      swap(&a[low], &a[high]);
        while (low<high&&a[low]<=base) {
            low++;
        }
        swap(&a[low], &a[high]);
//        if (a[low]==a[high]||low<high) {
//            base =a[low];
//        }

    }
//    for ( int i=0; i<N; i++) {
//        printf( "%d ", a[i]);
//    }

    return low;
}
void quickSort(int a[],int low,int high)
{

    if(high>=low){
    int mid=spolit(a,low,high);
//        printf( "\n%d ", mid);
    quickSort(a,low,mid-1);
    quickSort(a,mid+1,high);
    }


}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
       // test1();//随即数组10个数(20-30)计算找出最大值和所有元素的和
       // test2();//生成20个元素的数组 每个元素的取值范围在(30-70)之间求数组元素的和
        //test3();//复制一个数组到另外一个数组里面
        //test5();//随机生成(20-40)两个数组  相加放到另外一个数组里面
        //test6();//选择排序
        //test7();//快速排序
        printf("\n");
        //InsertSort();
        int a[N]={10,8,3,5,7,2,1,8,5,7};
        int low=0,high=N-1;
        quickSort(a,low,high);
        for (int i=0; i<N; i++)
        {
            printf("%2d ",a[i]);
        }


    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值