演算法習題---線性表之控制變數個數擷取資料最小值

來源:互聯網
上載者:User

標籤:整數   com   長度   分享圖片   alt   9.png   use   return   sys   

一:問題
有N個個位正整數存放在int整型數組A中,N定義為已經定義的常量N<=9,數組長度為N,另給一個int型變數i,要求只用上述變數,寫一個演算法,找出N個整數中的最小者,並且要求不能破壞數組資料。
二:解題思路
i作為變數,這個變數的百位用於儲存最小值地址,十位用來儲存最小值,個位用於當前指向的地址。
三:演算法實現
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#define N 9//i的百位儲存最小位置下標,十位儲存最小值,個位儲存當前索引下標void findMin(int a[])    //使用函數的話可以按照指標來做,不過太取巧了{    int i = a[0] * 10;    //0*100+a[0]*10+0    百位儲存最小位置下標,十位儲存最小值,個位儲存當前索引下標    while (i%10<N)    //i%10就是當前下標    {        if (a[i % 10]<(i % 100 / 10))    //擷取i的十位元字來比較        {            //更新i值的百位元字和十位元字            i = (i % 10) * 100 + a[i % 10] * 10 + i % 10;        }        i++;    //當前位置進一格    }    printf("min value:%d in index:%d", i % 100 / 10, i / 100);}int main(){    int a[N] = { 9, 8, 7, 2, 1, 3, 4, 5, 4};    findMin(a);    system("pause");    return 0;}

四:注意
該演算法的前提是:有N個個位正整數存放在int整型數組A中,N定義為已經定義的常量N<=9(也就是說數組長度不能超過9,因為我們i資料只用了一位來儲存下標和數值)
思考:可以擴充i的下標和值佔位數來儲存更長的資料,或者只需要我們擷取最小下標,這樣會更加容易擴充

 

演算法習題---線性表之控制變數個數擷取資料最小值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.