以下C程序在数组中搜索小于 <RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/md_grey_200"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/relative_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/gradient">
<RelativeLayout
android:layout_width="120dp"
android:layout_height="120dp"
android:id="@+id/imageLayout"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:background="@drawable/image_background">
<ImageView
android:id="@+id/courseimage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:background="@drawable/sq_default"
android:layout_alignParentTop="true"/>
</RelativeLayout>
<LinearLayout
android:layout_width="60dp"
android:layout_height="60dp"
android:background="#FFFFFF"
android:layout_above="@+id/card_view8"
android:layout_toLeftOf="@+id/imageLayout"
android:layout_alignLeft="@+id/card_view8"
android:layout_alignStart="@+id/card_view8"
android:id="@+id/linearLayout11"
android:orientation="horizontal">
</LinearLayout>
<LinearLayout
android:layout_width="60dp"
android:layout_height="60dp"
android:background="#FFFFFF"
android:layout_above="@+id/card_view8"
android:layout_toRightOf="@+id/imageLayout"
android:layout_alignRight="@+id/card_view8"
android:layout_alignEnd="@+id/card_view8"
android:orientation="horizontal">
</LinearLayout>
<android.support.v7.widget.CardView
android:id="@+id/card_view8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="#FFFFFF"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_below="@+id/imageLayout"
card_view:cardCornerRadius="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/coursetitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text=""
android:textColor="#58595b"
android:textStyle="bold"
android:textSize="17sp"
android:maxLines="2"
android:layout_marginTop="18dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:layout_alignParentTop="true"/>
<TextView
android:id="@+id/institutetitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="4dp"
android:paddingBottom="8dp"
android:text=""
android:textColor="#58595b"
android:maxLines="2"
android:textStyle="bold"
android:textSize="14sp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:layout_alignParentTop="true"/>
<TextView
android:id="@+id/batch_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="4dp"
android:paddingBottom="8dp"
android:text=""
android:textColor="#58595b"
android:maxLines="2"
android:textStyle="bold"
android:textSize="14sp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:layout_alignParentTop="true"/>
<TextView
android:id="@+id/button_enroll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="15sp"
android:paddingRight="28dp"
android:paddingLeft="28dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:textStyle="bold"
android:textColor="#FFFFFF"
android:background="@drawable/red_button"
android:text=""
android:layout_below="@+id/coursetitle"
android:layout_marginTop="10dp"
android:layout_marginBottom="20dp"/>
</LinearLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/md_grey_300" />
<LinearLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="3"
android:background="#FFFFFF">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable"
app:tabGravity="fill"
app:tabTextColor="@color/md_grey_700"
app:tabSelectedTextColor="#fd4347"
app:tabIndicatorColor="#fd4347"
app:tabIndicatorHeight="2dp"
android:layout_marginTop="5dp"/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/md_grey_300" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
</LinearLayout>
</ScrollView>
的值。如果“array”中的值是正整数,我可以将其外推到任何数组长度吗?
search
提前做出来,
何塞路易斯
答案 0 :(得分:1)
是的,您可以通过在array_size
中设置所需的大小来获得任何数组长度,但您应该在数组中输入有序数字。
此外,您还可以将last
变量更改为低于array_size - 1
的值,例如在这种情况下8
,但这将限制搜索到8
元素。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
int array_size = 11;
int *array = malloc(sizeof(int) * array_size);
for (i = 0; i < array_size; i++)
scanf("%d", &array[i]);
for (i = 0; i < array_size; i++)
printf("%d \t", array[i]);
printf("\n");
int first = 0;
int last = array_size - 1;
int search = 7;
int middle = (first+last)/2;
while (first <= last)
{
if (array[middle] < search)
first = middle + 1;
else if (array[middle] > search)
last = middle - 1;
else
{
printf("%d found at indext %d\n", array[middle], middle);
return 0;
}
middle = (first + last)/2;
printf("first= %d,last= %d, middle= %d, search= %d\n",
first, last, middle, search);
}
printf("%d: Element not found\n", search);
return -1;
}
答案 1 :(得分:0)
你在while循环中缺少1行。
#include <stdio.h>
int main()
{
int array[11] = { 1, 5, 9, 15, 37, 49, 56, 65, 74, 90, 95};
int first = 0;
int last = 11;
int search = 95;
int middle = (first+last)/2;
while (first <= last) {
middle = (first + last)/2; //this line
if (array[middle] < search)
first = middle + 1;
else if (array[middle] > search)
last = middle - 1;
else
{
printf("Found");
return 0;
}
}
printf("Not found");
return 0;
}
更改第一个或最后一个元素时,必须初始化中间值。我每次都这样做,因为这是一个小程序,所以它不会对表演造成很大的伤害。 当你不这样做时,你的中间元素在你搜索时停留在第一个元素之前,这不是你想要的。